crossplatform.ru

Здравствуйте, гость ( Вход | Регистрация )


  Ответ в Секреты и интересные возможности Qt
Введите ваше имя
Подтвердите код

Введите в поле код из 6 символов, отображенных в виде изображения. Если вы не можете прочитать код с изображения, нажмите на изображение для генерации нового кода.
 

Опции сообщения
 Включить смайлы?
Иконки сообщения
(Опционально)
                                
                                
  [ Без иконки ]
 


Последние 10 сообщений [ в обратном порядке ]
Litkevich Yuriy Дата 7.5.2015, 11:53
 
Цитата(PUMA @ 30.4.2015, 3:30) *
А есть способ убить слот, который стоит в очереди, но еще не выполнен? А посмотреть содержимое очереди?
простого вроде - нет.

Покопайся в файлах moc_***.cpp (которые генерит MOC), как я помню, там простой массив указателей, который обходится разом.
PUMA Дата 30.4.2015, 1:30
 
Цитата(SABROG @ 13.3.2009, 14:49) *
Добавлю метод альтернативный методу QTimer::singleShot(), чтобы выполнить слот при возврате в главный event loop, т.е. после выхода из метода.

QMetaObject::invokeMethod(this, "nashSlot", Qt::QueuedConnection);


Этот код помещает в очередь событий информацию о том, что надо вызвать наш слот. Эквивалентно emit signalName с connection type Qt::QueuedConnection.

В принципе таким методом можно и сигналы симулировать.


:) А есть способ убить слот, который стоит в очереди, но еще не выполнен? А посмотреть содержимое очереди?
Litkevich Yuriy Дата 18.2.2013, 8:14
  Обсуждение вынес в отдельную тему: Работа с QSplitter в QtCreator
Day Дата 26.3.2012, 11:48
 
Цитата(Петров Виталий @ 18.9.2008, 8:31) *
Чтобы решить эту проблему можно вызывать метод QApplication::processEvents(); при каждой итерации цикла.
посмотрел этот метод у Макса Шлее. Нашел целых 2:
processEvents стр.602
processEvent стр.591
Видимо, последнее - опечатка? (в хедере не нашел)
Litkevich Yuriy Дата 6.3.2011, 21:30
 
Цитата(aliks-os @ 6.3.2011, 23:24) *
а то что то не особо получается...
приведи код того как делаешь, но создав отдельную тему (что бы эту не засорять, она у нас как копилка)
aliks-os Дата 6.3.2011, 21:24
  Уважаемый Sabrog,
вы показали как записывать в ini - qsettings.setValue("ListMyStruct", qVariantFromValue(msList));. Был бы вам очень признателен, если бы вы в ваш пример добавили как считать записанные данные из ini файл, а то что то не особо получается...
SABROG Дата 25.1.2011, 22:15
  В Wiki, на Developer Network нашел интересный вариант размещения окна по центру:

#include <QtGui/QStyle>
#include <QtGui/QDesktopWidget>
...
window->setGeometry(QStyle::alignedRect(Qt::LeftToRight, Qt::AlignCenter, window->size(), qApp->desktop()->availableGeometry()));
Алексей1153 Дата 22.1.2011, 22:05
 
Цитата(igor_bogomolov @ 20.1.2011, 17:00) *
Посмотрите как изменилось поведение виджета.

прикольно, но только после этого виджет не даёт редактировать свои свойства (помогает только откат действия)


Кстати, что я сюда зашёл то. Как раз тоже про комбобокс:
В поисках удобного выпадающего списка без прочих довесков, причём закрывающегося после потери фокуса или после выбора элемента, обнаружил следующее:

если создать комбобокс, но не показывать его (то есть он всегда hide() ), то, однако, список прекрасно вываливается методом showPopUp
Выбранный индекс берётся из сигнала currentIndexChanged.

перед выводом списка на экран, перед скрытием (hidePopup), очисткой или изменением элементов списка сигнал нужно отсоединять, чтобы не было ложных срабатываний выбора. Подключать же сигнал нужно сразу после метода showPopup


Появляется список под прямоугольником основного окна комбы, то есть так, как буд-то это окно было бы видимо. Если задать высоту комбы 0 (через setGeometry) , то верх списка будет совпадать с верхом комбы

Собственно, искомые мной свойства - закрывается по ESC или при потере фокуса
igor_bogomolov Дата 20.1.2011, 15:00
  Если вы пишите плагины для QtDesigner и хотите что бы на форме виджет не просто отрисовывался, а вел себя как настоящий виджет, присвойте ему имя вида
comboBox->setObjectName("__qt__passive_xxx");
, где xxx - это любая строка. Для эксперимента, киньте на форму комбобокс, добавьте в него пару итемов, после чего задайте имя в формате описанном выше. Посмотрите как изменилось поведение виджета.
SABROG Дата 18.1.2011, 20:11
  Понадобилось отследить изменения в файле, который находится в шаре на удаленном компьютере. К сожалению, QFileSystemWatcher может отслеживать только файлы и директории находящиеся на жестком диске. Но есть недокументированная возможность использовать опрос (polling), который можно включить таким образом:

    QFileSystemWatcher watcher;
    watcher.setObjectName(QLatin1String("_qt_autotest_force_engine_poller"));
    watcher.addPath(....);


На самом деле то, что идет до слова "poller", Qt особо не важно, главное, чтобы позиция слова в тексте совпадала.

Вы можете проголосовать, чтобы эту возможность включили в будущие дистрибутивы официально: тут
Просмотр темы полностью (откроется в новом окне)
RSS Текстовая версия Сейчас: 26.5.2022, 1:43