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

Войти
 
  Начало Форум WIKI (Вики)FAQ Помощь Поиск Войти Регистрация  
  Просмотр сообщений
Страниц: 1 ... 137 138 [139] 140 141 142
2071  Qt / Многопоточное программирование, процессы / Re: Правильное разделение решателя и GUI (прогресса) : Апрель 24, 2013, 10:07
В любом случае кто-то  - или Вы, или QtConcurrent должен делать периодическую проверку флага между операциями, чтобы понять, что пользователь решил прервать операцию. Смиритесь с этим.
Понял. Смирился. Спасибо.
2072  Qt / Многопоточное программирование, процессы / Re: Правильное разделение решателя и GUI (прогресса) : Апрель 23, 2013, 08:35
Забыл добавить. Методом QtConcurent::run есть возможность решить данную проблему, но, при этом придётся делать флаг, на проверку которого не хотелось бы тратить время. По мне так лучше, убить поток... Не знаю, как правильно выразиться...
2073  Qt / Многопоточное программирование, процессы / Re: Правильное разделение решателя и GUI (прогресса) : Апрель 23, 2013, 08:32
PPS а "решатель" - это откуда у вас такой термин? (не ирония, действительно интересно)
в определенных кругах термин используется по аналогии с английским solver.
В точку  Улыбающийся

На самом деле, я как-то не особо хорошо разобрался с QThread и у меня всё равно всё валит в одном потоке, да и нет сигнала finished(). Мне не нужно нормального завершения потока при нажатии на отмену.

Сейчас у меня есть класс, назовем его Parser. В нём есть слот parse. Есть ещё QThread* parserThread. Вот я moveToThread мой Parser* parser и connect(parserThread, SIGNAL(started()), parser, SLOT(parse())); connect(parserThread, SIGNAL(finished()), this, SLOT(showSuccessParse()));, где connect выдает везде значение true.
далее
Код:
parserThread->start();
parseProgrDlg->exec();
Результат: выполняется слот parse при этом показывается зависший диалог прогресса, а по завершении метода диалог отвисает и, по пока ещё не понятным мне причинам, не выполняется слот showSuccessParse()....
2074  Qt / Многопоточное программирование, процессы / Правильное разделение решателя и GUI (прогресса) : Апрель 22, 2013, 09:45
Привет всем!!!
Небезизвестно, что если в одном потоке заключить какой-нибудь решатель и погресс диалог, то с прорисовкой графического интерфейса будут проблемы.
Меня интересует, как можно вывести в  отдельный поток решатель для нормального отображения прогресса с min(0), max(0) и возможностью отмены процесса решателя без внедрения в решатель каких-либо проверок (типа if(кнопка отмены была нажата) return;)
2075  Программирование / Общий / Re: Тип double из c++ в delphi : Апрель 11, 2013, 22:01
Снимаю вопрос. Я сам разобрался. Оказалось, что при использовании оператора << в QDataStream происходит кодирование данных. Нужно было просто записывать в сыром виде...
Код:
int QDataStream::writeRawData ( const char * s, int len )
2076  Программирование / Общий / Тип double из c++ в delphi : Апрель 11, 2013, 21:37
Всем привет!
Есть функция в c++, которая записывает в бинарный файл переменную double.
Этот файл я читаю в Delphi с помощью:
Код:
reset(f, 1);
blockRead(f, doubleVariable, 8);
почему-то в doubleVariable оказывается не то значение, которое я ожидаю...
чтение идёт верно, так как перепроверял при записи считанного файла в массив байтов.
В c++ веду запись с помощью <QDataStream>, размер файла - 8 байт.
В чём может быть проблема?
2077  Qt / Вопросы новичков / Как работать с QScrollArea? : Март 28, 2013, 10:47
Доброго времени суток!
Не могу понять, что нужно сделать для оптимального отображения...
есть виджет, который содержит несколько QGroupBox на QHBoxLayout
из документации понял, чтобы отображался этот виджет в прокрутке, нужно задать минимальные его размеры.
Но при этом способе получается, что содержимое виджета расползается.
Как сделать вывод без этого расползания?
2078  Qt / Вопросы новичков / Re: Накладываются виджеты друг на друга : Март 27, 2013, 11:16
Спасибо.
Разницы я так и не понял между ними, но layout подошёл
2079  Qt / Вопросы новичков / Накладываются виджеты друг на друга : Март 27, 2013, 10:45
Доброго времени суток.
Создаю окно на подобии окна настроек, где есть QListWidget.
То есть, по сути, при изменении выбора элемента списка выводится соответствующее содержимое настроек в этом же окне рядом с самим списком...
Я столкнулся с такой проблемой, что создал в конструкторе несколько виджетов для настройки и проблема в том, что не добавляя на layout родителя, они вылезают в верхнем левом углу...
Как избавиться от этой проблемы? setVisible()?
2080  Qt / Пользовательский интерфейс (GUI) / Re: QMdiSubWindow запрет на удаление дочернего виджета : Февраль 25, 2013, 11:42
Да, ещё в констукторе нужно прописать тот самый атрибут на удаление по закрытию, а то без него будет течь память.
2081  Qt / Пользовательский интерфейс (GUI) / Re: QMdiSubWindow запрет на удаление дочернего виджета : Февраль 25, 2013, 11:07
Решил вопрос костылём!
Сначала сделал код
Код:
void MdiSubWindow::closeEvent(QCloseEvent* event)
{
setWidget(0);
}
Но он привел к закрытию самого окна, но таб и экшн в меню для этого окна всё равно оставался и не отвечал на действия.
Затем добил
Код:
void MdiSubWindow::closeEvent(QCloseEvent* event)
{
setWidget(0);
mdiArea()->removeSubWindow(this);
}

Всё теперь работает как и было мне надо.

Возможно, это велосипед. Может быть был способ без создания наследованного класса от QMdiSubWindow? Жду продолжения развития темы.
2082  Qt / Пользовательский интерфейс (GUI) / Re: QMdiSubWindow запрет на удаление дочернего виджета : Февраль 25, 2013, 10:55
В документации по addSubWindow() написано с примером что и как делать.
Ничего не помогло.
У меня организовано закрытие окон в табах а также в меню.
Изначально у меня было типа mdiArea->addSubWindow(myWidget)->show(); По сути, ничего удаляться из myWidget не должно при закрытии суб окна, так как при данном действии создается новое суб окно, родитель которого mdiArea и оно является вьюпортом myWidget и должно удаляться только само окно при закрытии, как я понял.
Теперь попробовал создать свое суб окно:
Код:
	QMdiSubWindow* win = new QMdiSubWindow;
win->setWidget(flats[selectedFlat]);
win->setAttribute(Qt::WA_DeleteOnClose);
mdiArea->addSubWindow(win)->show();
Это кусок кода из моей программы, где flats это QMap со значениями QWidget*. Я проверил, что при повторном запуске значения адресов не меняются.
Всё равно, данный код от проблемы не спас...
2083  Qt / Пользовательский интерфейс (GUI) / Re: QMdiSubWindow запрет на удаление дочернего виджета : Февраль 25, 2013, 07:52
Попробовать покрутить Qt::WA_DeleteOnClose.
Попытался я что-либо сделать с этим атрибутом - получается бессмысленно.
По умолчанию Qt, на сколько я знаю, вычищает память при закрытии. А этот атрибут только форсирует очистку при закрытии неглавного виджета.
2084  Qt / Пользовательский интерфейс (GUI) / Re: QMdiSubWindow запрет на удаление дочернего виджета : Февраль 25, 2013, 07:37
Попробовать покрутить Qt::WA_DeleteOnClose.
Не имел опыта работы с этой константой. Так что и не знаю, куда её приткнуть...
2085  Qt / Пользовательский интерфейс (GUI) / QMdiSubWindow запрет на удаление дочернего виджета : Февраль 24, 2013, 23:06
Всем привет!
У меня имеется в программе дерево с элементами.
При нажатии на элемент появляется суб окно с виджетом, привязанным к нажатому элементу
Код:
mdiArea->addSubWindow(myWidget)->show();
Если я закрою суб окно и попытаюсь снова открыть его, то програма выдаст мне ошибку
Код:
Unhandled exception at 0x650f448f (QtGuid4.dll) in postprocessor.exe: 0xC0000005: Access violation reading location 0xfeeeff46.
Я так понимаю, что при закрытии суб окна у меня вычищается myWidget и снова его вывести на экран становится невозможным.
Я пробовал переопределить closeEvent у QMdiSubWindow и прописать там hide() и ignore(), но это не помогло, а только привело к тому, что окно закрывается, а таб из-под него остается и становится каким-то неактивным...
Как же мне решить эту проблему?
Страниц: 1 ... 137 138 [139] 140 141 142

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