Russian Qt Forum
Май 03, 2024, 12:22 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
 
  Начало Форум WIKI (Вики)FAQ Помощь Поиск Войти Регистрация  
  Просмотр сообщений
Страниц: 1 ... 18 19 [20] 21 22 23
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"?
попробуйте более полезный код прописать в лямбде, оптимизатор такой код просто выкидывает:
Код:
int k = 0;
++k;
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) для резервирования памяти.
291  Qt / Вопросы новичков / Re: вывод чисел в шестнадцатеричном виде : Февраль 07, 2014, 13:38
смотрим документацию:
Код:
QString QString::number(int n, int base = 10) [static]
итого:
QString::number(n, 16);
292  Qt / Многопоточное программирование, процессы / Re: Нужно ли блокировать доступ к переменной : Февраль 07, 2014, 12:56
Наверное Вы больше склонны к гуманитарным вещам (живопись, музыка) чем к техническим где есть четкое Да/Нет  Улыбающийся
Вы обо мне ничего не знаете, чтоб делать такие выводы.

Я же вижу, что очень многие недопонимают работу с многопоточными алгоритмами.
Еще раз:
1. Есть объект (класс которого унаследован от QObject). Объект принадлежит одному потоку. Как запустить слот 2 раза механизмом Qt, чтоб "каждый запуск" выполнялся одновременно. Ответ: НИКАК.

2. Есть 2 объекта, принадлежат одному потоку. Даже тут может одновременно выполняться только один слот в контексте одного объекта единомоментно.

3. Есть 2 объекта, и 2 потока, соответственно может выполняться слот одновременно в каждом потоке, каждый в контексте своего объекта.

PS. В Qt довольно грамотно сделана работа с потоками, по сравнению с другим инструментами (Java, .net, а с ними я тоже работал) /это мое личное мнение/.
293  Qt / Многопоточное программирование, процессы / Re: Нужно ли блокировать доступ к переменной : Февраль 07, 2014, 12:37
Если объекты принадлежат разным тредам, то да, почему бы и нет.
Один объект не может принадлежать нескольким тредам одновременно.
294  Qt / Многопоточное программирование, процессы / Re: Нужно ли блокировать доступ к переменной в главном потоке (QMutex)? : Февраль 07, 2014, 12:10
По ходу дела вопрос - а само Qt защищает вызов слота мутексом или нет?
Если используется механизм Qt (invoke, или сигнал), второй вызов этого же слота отработает после текущего, если вызван просто как метод, то тут уж сам себе злобный буратино.
295  Qt / Вопросы новичков / Re: Помощь для новичков : Февраль 01, 2014, 12:54
1. qmake - подготовить makefile из *.pro
2. mingw32-make - скомпилить makefile

PS. сам использую msvc
296  Qt / Вопросы новичков / Re: Помощь для новичков : Февраль 01, 2014, 02:18
После того как в каталоге с pro файлом выполнили qmake сформировался makefile.
в makefile должно быть правило для формирования файла: gotocelldialog.h.

теперь на этапе make файл будет сгененирован и скомпилирован
297  Qt / Вопросы новичков / Re: Помощь для новичков : Февраль 01, 2014, 01:54
в pro файл включили строку?
FORMS  += gotocelldialog.ui
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?
300  Qt / Вопросы новичков / Re: Проблема с линковкой и компиляцией : Январь 27, 2014, 13:52
Можно настроить.

Инструменты -> Параметры -> Среда -> Клавитура
в строке фильтра: qmake
и задать сочетание

либо если FakeVim используется, можно связывание команд настроить
Страниц: 1 ... 18 19 [20] 21 22 23

Страница сгенерирована за 0.151 секунд. Запросов: 23.