286
|
Qt / Общие вопросы / Re: проблема с connect & lambda
|
: Февраль 09, 2014, 01:32
|
а простой код, типа: C++ (Qt) #include <iostream> using namespace std; int main() { auto l = [] () { cout << "hello"; }; l(); return 0; }
компилится, работает?
|
|
|
287
|
Qt / Общие вопросы / Re: проблема с connect & lambda
|
: Февраль 08, 2014, 23:56
|
Лямбдами активно пользуюсь, проблем не возникало. Компилятор MSVC 2010 Если Qt 5.2 у вас, можно попробовать выполнить лямбду в контексте объекта: QMetaObject::Connection QObject::connect(const QObject * sender, PointerToMemberFunction signal, const QObject * context, Functor functor, Qt::ConnectionType type) [static]
по поводу warning C4505, пишут что это баг компиляторов MSVC до 2010 включительно. отключить: #if defined(_MSC_VER) && (_MSC_VER <= 1600) # pragma warning(disable:4505) #endif но сомневаюсь, что код после этого заработает
|
|
|
288
|
Qt / Общие вопросы / Re: проблема с connect & lambda
|
: Февраль 08, 2014, 23:11
|
По теме: Вот минимальный код, который у меня воспроизводит проблему: void MainController::EstablishConnections() { QAction* pAction = lang_action.data(); bool c1 = connect(pAction, &QAction::triggered, []() { int k = 0; ++k; }); } Переменная c1 нормально устанавливается в true. Получаю варнинг: warning C4505: 'QAction::[thunk]: __thiscall QAction::`vcall'{8,{flat}}' }'' : unreferenced local function has been removed Это почему лямбда то выкусывается? Если этот акшн потом привязать к пункту меню - то пункт меню не показывается. Это как понимать? А выкусывается только тогда, когда вы компилите в "release"? попробуйте более полезный код прописать в лямбде, оптимизатор такой код просто выкидывает:
|
|
|
289
|
Qt / Общие вопросы / Re: Контейнерные классы
|
: Февраль 08, 2014, 23:04
|
Так вы почитали в чем разница между Map и Hash? Если нужно только искать, то при таких объемах (небольших) разницы вы не увидите. А вот если вы захотите пробегаться по всей коллекции, то разницу вы увидите сразу. Пробуйте. Поддерживаю. И добавлю, на хабре пробегала статья: QMap vs. QHash: небольшой бенчмарк
|
|
|
290
|
Qt / Общие вопросы / Re: Контейнерные классы
|
: Февраль 07, 2014, 16:53
|
Не вижу никакого параметра "размер" подаваемого в QMap - ни в Qt 4.7 ни в Qt 5.2.
Немного запоздало пишу, но все же. Классы: QList, QSet, QHash имеют метод reserve(int size) для резервирования памяти.
|
|
|
292
|
Qt / Многопоточное программирование, процессы / Re: Нужно ли блокировать доступ к переменной
|
: Февраль 07, 2014, 12:56
|
Наверное Вы больше склонны к гуманитарным вещам (живопись, музыка) чем к техническим где есть четкое Да/Нет Вы обо мне ничего не знаете, чтоб делать такие выводы. Я же вижу, что очень многие недопонимают работу с многопоточными алгоритмами. Еще раз: 1. Есть объект (класс которого унаследован от QObject). Объект принадлежит одному потоку. Как запустить слот 2 раза механизмом Qt, чтоб "каждый запуск" выполнялся одновременно. Ответ: НИКАК. 2. Есть 2 объекта, принадлежат одному потоку. Даже тут может одновременно выполняться только один слот в контексте одного объекта единомоментно. 3. Есть 2 объекта, и 2 потока, соответственно может выполняться слот одновременно в каждом потоке, каждый в контексте своего объекта. PS. В Qt довольно грамотно сделана работа с потоками, по сравнению с другим инструментами (Java, .net, а с ними я тоже работал) /это мое личное мнение/.
|
|
|
296
|
Qt / Вопросы новичков / Re: Помощь для новичков
|
: Февраль 01, 2014, 02:18
|
После того как в каталоге с pro файлом выполнили qmake сформировался makefile. в makefile должно быть правило для формирования файла: gotocelldialog.h.
теперь на этапе make файл будет сгененирован и скомпилирован
|
|
|
298
|
Qt / Вопросы новичков / Re: QList и struct
|
: Январь 31, 2014, 21:02
|
гадание на кофейной гуще... вот код: C++ (Qt) #include <QString> #include <QList> struct Foo { QString name; int index; }; int main(int argc, char *argv[]) { QList<Foo> f; return 0; }
у меня компилится и отрабатывает без проблем.
|
|
|
299
|
Qt / Вопросы новичков / Re: QList и struct
|
: Январь 31, 2014, 19:56
|
проблем быть не должно с данным кодом
Какой компилятор? Все необходимые хидеры подключаются? qmake выполнен, перед make?
|
|
|
|
|