1712
|
Qt / Многопоточное программирование, процессы / Использование QFuture и QtConcurrent внутри класса с вызовом метода этого класса
|
: Сентябрь 04, 2012, 17:18
|
Здравствуйте! Есть у меня 2 таблицы QTableWidget Есть две функции заполняющие эти таблицы и выделяющие память под пользовательские виджеты таблицы хранят информацию по пользовательским виджетам (наследование QWidget) и если данных много, интерфейс начинает виснуть, что не хорошо сначало решил воспользоваться QThread и передавать ему указатель на функцию, которую он будет в run() запускать, потом нашел информацию о QFuture и QtConcurrent Теперь о главном, как запустить в двух потоках отдельные функции-члены, запуск нужно сделать в конструкторе класса, кроме того эти функции-члены принадлежат этому же классу долго мучился, искал, потом тыкал пальцем в небо, и сгенерировал такой пример (который конечно не пашет, иначе не создавал здесь тему): MyClass::MyClass(QWidget *parent):QWidget(parent) { QFuture <void> threadLoadInTable1; QFuture <void> threadLoadInTable2;
threadLoadInTable1 = QtConcurrent::run(&MyClass::loadInTable1); threadLoadInTable2 = QtConcurrent::run(&MyClass::loadInTable2); }
Ошибка: no matching function for call to 'run(void (MyClass::*)())'пытался так: threadLoadInTable1 = QtConcurrent::run(loadInTable1);
Ошибка такая: no matching function for call to 'run(<unresolved overloaded function type>)'прототипы для этих функций такого вида: т.е. ничего не возвращают и параметры не принимают Слышал, что gui нельзя создавать вне главного потока, и похоже все равно не получится запустить эти функции в отдельном потоке Помогите пожалуйста!
|
|
|
1715
|
Qt / Общие вопросы / [РЕШЕНО] Сигналы и слоты в динамической цепи классов
|
: Сентябрь 02, 2012, 21:15
|
Здравствуйте! Пилил сейчас проект, и заинтересовался вопросом про сигналы и слоты. Погуглил, прочитал из документации про них, но ответ на свой вопрос не получил Ситуация такая: Есть виджет, принимающий и отправляющий сигналы, с ним коннектится другой класс, написал функцию что то типа void setConnectWithType(Type *type), как вы видите в нее передается указатель, а внутри проверочка на существования указателя: и в скопках куча connect(), и благодаря этому можно к такому виджету можно подключить кучу классов Type А что случится, если один из этих классов будет освобожден? Будет ли к нему отправлен сигнал? Нужно ли принудительно рассоединять до освобождения с помощью disconnect() или это уже позаботились до нас?
|
|
|
1717
|
Qt / Общие вопросы / Re: Бинарная строка
|
: Август 31, 2012, 14:05
|
а с приведенным мной значением что выводит?
скопировал я этот код: QString s = QByteArray::fromHex("517420697320677265617421FFFF"); qDebug() << s; qDebug() << s.toAscii().toHex();
вывелось у меня: "Qt is great!yy" "517420697320677265617421ffff"
|
|
|
1718
|
Qt / Общие вопросы / Re: Правила составления версии, build и истории изменений программы
|
: Август 31, 2012, 14:03
|
Не уж то никто не давал программам версии и потом прокачивал эти версии? в aimp это вот так выглядит: AIMP v3.10 Build 1061 (29.06.2012)
AIMP v3.10 Build 1051 RC 2 (01.06.2012) AIMP v3.10 Build 1045 RC 1 (21.05.2012)
AIMP v3.10 Build 1040 Beta 3 (08.05.2012) AIMP v3.10 Build 1034 Beta 2 (27.04.2012) AIMP v3.10 Build 1027 Beta 1 (16.04.2012) =========================================
AIMP v3.00 Build 985 (06.04.2012) AIMP v3.00 Build 981 (16.02.2012) AIMP v3.00 Build 976 (30.12.2011)
AIMP v3.00 Build 970 RC 3 (23.12.2011) AIMP v3.00 Build 961 RC 2 (02.12.2011)
AIMP v3.00 Build 934 Beta 5 (07.10.2011) AIMP v3.00 Build 916 Beta 4 (07.08.2011) AIMP v3.00 Build 915 Beta 4 (05.08.2011) AIMP v3.00 Build 901 Beta 3 (02.07.2011) AIMP v3.00 Build 900 Beta 3 (01.07.2011) AIMP v3.00 Build 881 Beta 2 (06.05.2011) AIMP v3.00 Build 861 Beta 1 (01.04.2011) AIMP v3.00 Build 851 Beta 1 (09.03.2011)
откуда берутся эти значение сборки? по какому правилу они повышаются? что за RC? если не знаете, так подскажите, как вы делали или видели у других
|
|
|
1719
|
Qt / Общие вопросы / Re: Бинарная строка
|
: Август 31, 2012, 13:41
|
QByteArray byteArr = "ff04d3"; QString s = QString(byteArr); qDebug() << s.toLocal8Bit(); qDebug() << s.toAscii();
выводит "ff04d3"
|
|
|
1720
|
Qt / Общие вопросы / Re: Бинарная строка
|
: Август 31, 2012, 13:16
|
QByteArray byteArr = "ff04d3"; QString str = QString(byteArr); QMessageBox::information(0, "", str);
вывелось "ff04d3"
|
|
|
1721
|
Qt / Общие вопросы / [РЕШЕНО] Правила составления версии, build и истории изменений программы
|
: Август 31, 2012, 11:42
|
Собственно, вопрос Есть ли такие правила? как правильно составлять версию программы? когда нужно повышать версию программы? что за build? (как переводит я знаю) насчет истории изменений, увидел, что изменения делились на три метки: +, -, * "+" - новое "-" - исправление ошибок "*" - обновления плагинов, используемых в программе есть ли какие то правила для составления истории измений, использования в ней меток?
|
|
|
1724
|
Программирование / С/C++ / Re: Запуск одной копии программы + Показ первой копии
|
: Август 31, 2012, 01:39
|
main таков: #include <QtGui/QApplication> #include "ManagerNote.h" #include "qtsingleapplication/qtsingleapplication.h"
int main(int argc, char *argv[]) { QtSingleApplication instance(argc, argv); if (instance.sendMessage("Wake up!")) if(instance.isRunning()) return 0;
QPixmap *pixmap = new QPixmap(":/images/splash.png");
pixmap->scaledToWidth(200, Qt::SmoothTransformation);
QSplashScreen *splash = new QSplashScreen(*pixmap); splash->show();
// instance.processEvents();
splash->showMessage("initialization...", Qt::AlignRight);
ManagerNote *managerNote = new ManagerNote();
instance.setActivationWindow(managerNote);
splash->finish(managerNote);
delete pixmap; delete splash;
instance.setQuitOnLastWindowClosed(false);
QObject::connect(&instance, SIGNAL(messageReceived(QString)), managerNote, SLOT(messageToApp(QString)));
return instance.exec(); }
может я что то в main напутал?
|
|
|
|
|