Просмотр сообщений
|
Страниц: 1 [2] 3 4 ... 32
|
17
|
Qt / Вопросы новичков / Re: Виджет-карта Qt 5.6
|
: Октябрь 27, 2016, 08:58
|
Помогите найти решение: как встроить карту в виде виджета в Qt 5.6? Подскажите какую библиотеку использовать. Уже несколько дней гуглю, читаю форумы разнообразные, но ничего не могу найти подходящего. QLocation, представляющий такую возможность, к сожалению больше этого не делает, т.к. карты с лета 2016 года не поддерживаются. Разнообразные QMapControl требуют Webkit, которого в 5.6, ясное дело, нима. Помогите с решением проблемы За несколько дней можно было самому написать, благо тайловый вариант более чем не сложен. ~2 года назад тут похожий вопрос был, написал за скорую руку пример: https://github.com/KurlesHS/QtOsmTileMaps. Под тайлы OSM несложно доработать.
|
|
|
19
|
Qt / Многопоточное программирование, процессы / Re: Поиск слов в файле в Qt(Mutex)
|
: Октябрь 06, 2016, 14:59
|
а скиньте код как вы сделали виджет, да нужно ручками самому делать
C++ (Qt) CustomWidget::CustomWidget(QWidget *parent) : QWidget(parent) { /* нужные указатели, такие как toolButtonSelectDir, * pushButtonStart, lineEditDirName и listWidgetResult * можно (нужно) сдеалать переменными класса */ QVBoxLayout *verticalLayout2; QHBoxLayout *horizontalLayout2; QGroupBox *groupBox; QHBoxLayout *horizontalLayout; QLineEdit *lineEditDirName; QToolButton *toolButtonSelectDir; QPushButton *pushButtonStart; QGroupBox *groupBox2; QVBoxLayout *verticalLayout; QListWidget *listWidgetResult; verticalLayout2 = new QVBoxLayout(this); verticalLayout2->setSpacing(6); verticalLayout2->setContentsMargins(11, 11, 11, 11); horizontalLayout2 = new QHBoxLayout(); horizontalLayout2->setSpacing(6); groupBox = new QGroupBox(this); horizontalLayout = new QHBoxLayout(groupBox); horizontalLayout->setSpacing(6); horizontalLayout->setContentsMargins(11, 11, 11, 11); lineEditDirName = new QLineEdit(groupBox); horizontalLayout->addWidget(lineEditDirName); toolButtonSelectDir = new QToolButton(groupBox); horizontalLayout->addWidget(toolButtonSelectDir); horizontalLayout2->addWidget(groupBox); pushButtonStart = new QPushButton(this); horizontalLayout2->addWidget(pushButtonStart); verticalLayout2->addLayout(horizontalLayout2); groupBox2 = new QGroupBox(this); verticalLayout = new QVBoxLayout(groupBox2); verticalLayout->setSpacing(6); verticalLayout->setContentsMargins(11, 11, 11, 11); listWidgetResult = new QListWidget(groupBox2); verticalLayout->addWidget(listWidgetResult); verticalLayout2->addWidget(groupBox2); setWindowTitle(tr("Поиск файла")); toolButtonSelectDir->setText("..."); pushButtonStart->setText(tr("Начать")); lineEditDirName->setText(tr("d:/some_dir")); resize(600, 600); }
Код, сгенеренный uic'ом, и немного подправленный.
|
|
|
20
|
Qt / Многопоточное программирование, процессы / Re: Поиск слов в файле в Qt(Mutex)
|
: Октябрь 05, 2016, 21:29
|
Теперь мне нужно вместо консоли сделать в виде виджетта. 1)Подскажите как в виджетте директорию задавать? 2) Как сделать что бы в верхней части о задавать директорию а в нижней результат выводить?
Если с точки зрения "дизайна", то я бы сделал примерно так: В нижнем QGroupBox находиться QListWidet. Можно заменить на QTextEdit. Ну и вместо ручного кодирования использовал бы дизайнер. Или по условию задачи нужно ручками виджеты на форме выставлять? Если да, то использовал бы сгенереный дизайнером код с небольшими правками =)
|
|
|
22
|
Qt / Общие вопросы / Re: фильтрация и сортировка в отдельном потоке
|
: Сентябрь 03, 2016, 17:40
|
Как то совсем смутно представляю, как это сделать можно.
А как насчёт сортировки блоками в потоках? И как ее прикрутить к QSortFilterProxyModel? Функция bool QSortFilterProxyModel::lessThan(const QModelIndex &source_left, const QModelIndex &source_right) const, отвечающая за алгоритм сортировки, вызывается вьюхой в потоке, в котором живет GUI. То же самое и к filterAcceptsRow(...) относится. Если я не прав, пните в нужном направлении =)
|
|
|
24
|
Qt / Вопросы новичков / Re: Связь между модулями
|
: Июль 21, 2016, 16:59
|
Тогда такой вопрос, возможно ли написать геттер который вернет массив?
Многомерные массивы проблематично возвращать. Проще геттер для элемента массива написать. И даже наверное так лучше будет.
|
|
|
26
|
Qt / Вопросы новичков / Re: Обработка события кнопки в динамически созданной вкладке.
|
: Июль 20, 2016, 14:29
|
переименуй on_tbltoolButton_clicked в onTbltoolButton_clicked, что бы автоматического связывания не происходило и при создании кнопки соединяй сигнал clicked с onTbltoolButton_clicked вручную: C++ (Qt) tbltoolbutton = new QToolButton(Direction_0); tbltoolbutton->setObjectName(QStringLiteral("tbltoolbutton")); tbltoolbutton->setGeometry(430, 30, 80, 30); tbltoolbutton->setText(QApplication::translate("Rotation3D", "...", 0)); connect(tootbltoolbutton, SIGNAL(clicked()), this, SLOT(onTbltoolButton_clicked()));
|
|
|
28
|
Программирование / С/C++ / Протаскивание большой структуры через череду return
|
: Июль 11, 2016, 17:21
|
Доброго времени суток. Иногда нужно протащить тяжеловесную структуру через несколько return (тот же паттерн pimpl у Qt). Синтетический пример: C++ (Qt) #include <stdio.h> struct SomeLargeStuct { char data[100000]; // .... }; SomeLargeStuct f1 () { SomeLargeStuct s; s.data[0] = 'a'; s.data[1] = 0x0a; s.data[2] = 0x00; return s; } SomeLargeStuct f2() { return f1(); } SomeLargeStuct f3() { return f2(); } int main(int argc, char *argv[]) { (void)argc; (void)argv; auto r = f3(); printf(r.data); return 0; }
Задумался над накладными расходами, он же по идее должен каждый раз в новой функции через конструктор копирования новый объект создавать? Добавил для теста в SomeLargeStuct отладочный вывод как в конструктор копирования так и в обычный конструктор - судя по выводу обычный конструктор вызвался один раз, конструктор копирования же совсем не вызывался. Собственно вопрос - я могу на данное поведение рассчитывать во всех подобных случаях, или компилятор этот синтетический пример так оптимизировал? Ну и если у кого есть что почитать на эту тему - буду премного благодарен.
|
|
|
29
|
Qt / Дополнительные компоненты / Re: Подключение QuaZip
|
: Июнь 26, 2016, 21:12
|
У меня подключено так: в .pro файле приложения, в инклюде поменять путь до расположения файла quazip.pri библиотеки. #QuaZip support
DEFINES += QUAZIP_STATIC include($$PWD/../3rdparty/quazip/quazip.pri) LIBS += -lz
#end QuaZip support
|
|
|
30
|
Qt / Общие вопросы / Re: чем можно записать аудио в файл? (НЕ С МИКРОФОНА!!!)
|
: Июнь 17, 2016, 17:19
|
Kurles, добавил в твой код свой кусок
} else if (!mThread.isRunning()) { qDebug() << "let's go!"; startWaitAnyKey(); QMediaPlayer* player =new QMediaPlayer(0, QMediaPlayer::StreamPlayback); player->setVolume(50); player->setMedia(QMediaContent(), &buf); player->play();
}
QNetworkReply *r = qobject_cast<QNetworkReply*>(sender()); QByteArray qa; qa=r->readAll(); mFile->write(qa); buf.write(qa.data(),qa.size());
плеер пару сек играет и замолкает - у плеера кончился контент QMediaPlayer::BufferedMedia QMediaPlayer::EndOfMedia
Тут уже не подскажу - с QMediaPlayer не сталкивался. Но вообще бы попробовал бы ffmpeg прикрутить и уже обработанный поток через QAudioOutput играл.
|
|
|
Страниц: 1 [2] 3 4 ... 32
|
|
|