Здравствуйте!
Есть у меня 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>)'прототипы для этих функций такого вида:
void function(void)
т.е. ничего не возвращают и параметры не принимают
Слышал, что gui нельзя создавать вне главного потока, и похоже все равно не получится запустить эти функции в отдельном потоке
Помогите пожалуйста!