crossplatform.ru

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

10 страниц V  « < 8 9 10  
Ответить в данную темуНачать новую тему
> Секреты и интересные возможности Qt
SABROG
  опции профиля:
сообщение 18.1.2011, 20:11
Сообщение #91


Профессионал
*****

Группа: Участник
Сообщений: 1207
Регистрация: 8.12.2008
Из: Russia, Moscow
Пользователь №: 446

Спасибо сказали: 229 раз(а)




Репутация:   34  


Понадобилось отследить изменения в файле, который находится в шаре на удаленном компьютере. К сожалению, QFileSystemWatcher может отслеживать только файлы и директории находящиеся на жестком диске. Но есть недокументированная возможность использовать опрос (polling), который можно включить таким образом:

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


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

Вы можете проголосовать, чтобы эту возможность включили в будущие дистрибутивы официально: тут
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
igor_bogomolov
  опции профиля:
сообщение 20.1.2011, 15:00
Сообщение #92


Профессионал
*****

Группа: Сомодератор
Сообщений: 1215
Регистрация: 22.3.2009
Из: Саратов
Пользователь №: 630

Спасибо сказали: 235 раз(а)




Репутация:   29  


Если вы пишите плагины для QtDesigner и хотите что бы на форме виджет не просто отрисовывался, а вел себя как настоящий виджет, присвойте ему имя вида
comboBox->setObjectName("__qt__passive_xxx");
, где xxx - это любая строка. Для эксперимента, киньте на форму комбобокс, добавьте в него пару итемов, после чего задайте имя в формате описанном выше. Посмотрите как изменилось поведение виджета.
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Алексей1153
  опции профиля:
сообщение 22.1.2011, 22:05
Сообщение #93


фрилансер
******

Группа: Участник
Сообщений: 2906
Регистрация: 19.6.2010
Из: Обливион
Пользователь №: 1822

Спасибо сказали: 215 раз(а)




Репутация:   34  


Цитата(igor_bogomolov @ 20.1.2011, 17:00) *
Посмотрите как изменилось поведение виджета.

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


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

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

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


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

Собственно, искомые мной свойства - закрывается по ESC или при потере фокуса
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
SABROG
  опции профиля:
сообщение 25.1.2011, 22:15
Сообщение #94


Профессионал
*****

Группа: Участник
Сообщений: 1207
Регистрация: 8.12.2008
Из: Russia, Moscow
Пользователь №: 446

Спасибо сказали: 229 раз(а)




Репутация:   34  


В Wiki, на Developer Network нашел интересный вариант размещения окна по центру:

#include <QtGui/QStyle>
#include <QtGui/QDesktopWidget>
...
window->setGeometry(QStyle::alignedRect(Qt::LeftToRight, Qt::AlignCenter, window->size(), qApp->desktop()->availableGeometry()));
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
aliks-os
  опции профиля:
сообщение 6.3.2011, 21:24
Сообщение #95


Студент
*

Группа: Новичок
Сообщений: 11
Регистрация: 7.4.2010
Пользователь №: 1603

Спасибо сказали: 0 раз(а)




Репутация:   0  


Уважаемый Sabrog,
вы показали как записывать в ini - qsettings.setValue("ListMyStruct", qVariantFromValue(msList));. Был бы вам очень признателен, если бы вы в ваш пример добавили как считать записанные данные из ini файл, а то что то не особо получается...
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Litkevich Yuriy
  опции профиля:
сообщение 6.3.2011, 21:30
Сообщение #96


разработчик РЭА
*******

Группа: Сомодератор
Сообщений: 9666
Регистрация: 9.1.2008
Из: Тюмень
Пользователь №: 64

Спасибо сказали: 807 раз(а)




Репутация:   94  


Цитата(aliks-os @ 6.3.2011, 23:24) *
а то что то не особо получается...
приведи код того как делаешь, но создав отдельную тему (что бы эту не засорять, она у нас как копилка)
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Day
  опции профиля:
сообщение 26.3.2012, 11:48
Сообщение #97


Новичок


Группа: Новичок
Сообщений: 5
Регистрация: 26.3.2012
Пользователь №: 3287

Спасибо сказали: 0 раз(а)




Репутация:   0  


Цитата(Петров Виталий @ 18.9.2008, 8:31) *
Чтобы решить эту проблему можно вызывать метод QApplication::processEvents(); при каждой итерации цикла.
посмотрел этот метод у Макса Шлее. Нашел целых 2:
processEvents стр.602
processEvent стр.591
Видимо, последнее - опечатка? (в хедере не нашел)
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Litkevich Yuriy
  опции профиля:
сообщение 18.2.2013, 8:14
Сообщение #98


разработчик РЭА
*******

Группа: Сомодератор
Сообщений: 9666
Регистрация: 9.1.2008
Из: Тюмень
Пользователь №: 64

Спасибо сказали: 807 раз(а)




Репутация:   94  


Обсуждение вынес в отдельную тему: Работа с QSplitter в QtCreator
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
PUMA
  опции профиля:
сообщение 30.4.2015, 1:30
Сообщение #99


Новичок


Группа: Новичок
Сообщений: 2
Регистрация: 30.4.2015
Пользователь №: 4373

Спасибо сказали: 0 раз(а)




Репутация:   0  


Цитата(SABROG @ 13.3.2009, 14:49) *
Добавлю метод альтернативный методу QTimer::singleShot(), чтобы выполнить слот при возврате в главный event loop, т.е. после выхода из метода.

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


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

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


:) А есть способ убить слот, который стоит в очереди, но еще не выполнен? А посмотреть содержимое очереди?
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Litkevich Yuriy
  опции профиля:
сообщение 7.5.2015, 11:53
Сообщение #100


разработчик РЭА
*******

Группа: Сомодератор
Сообщений: 9666
Регистрация: 9.1.2008
Из: Тюмень
Пользователь №: 64

Спасибо сказали: 807 раз(а)




Репутация:   94  


Цитата(PUMA @ 30.4.2015, 3:30) *
А есть способ убить слот, который стоит в очереди, но еще не выполнен? А посмотреть содержимое очереди?
простого вроде - нет.

Покопайся в файлах moc_***.cpp (которые генерит MOC), как я помню, там простой массив указателей, который обходится разом.
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение

10 страниц V  « < 8 9 10
Быстрый ответОтветить в данную темуНачать новую тему
Теги
Нет тегов для показа


3 чел. читают эту тему (гостей: 3, скрытых пользователей: 0)
Пользователей: 0




RSS Текстовая версия Сейчас: 17.1.2021, 18:29