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

Войти
 
  Начало Форум WIKI (Вики)FAQ Помощь Поиск Войти Регистрация  
  Просмотр сообщений
Страниц: 1 ... 191 192 [193] 194 195
2881  Qt / Пользовательский интерфейс (GUI) / Re: Нотификации : Март 17, 2010, 12:17
Цитировать
формальную спецификацию что-то не нашел
Desktop Notifications Specification
2882  Qt / Пользовательский интерфейс (GUI) / Re: Редактирование текста в QLineEdit : Март 17, 2010, 12:15
void QLineEdit::editingFinished ()   [signal]
2883  Qt / Пользовательский интерфейс (GUI) / Re: QListViewItem : Март 17, 2010, 10:49
Цитата: Я же уже писал
Можно посмотреть исходники PropertiesEditor-a designer-a tools/designer/designer/propertyeditor.cpp
Там всё что вам нужно есть.

Цитировать
Не очень понятно, чего там надо написать
Дык всё просто - (толщина рамки + отступ) * 2 + ширина иконки + ширина текста

Цитировать
может проще в paintCell вызвать метод базового класса?
И QListView отрисует текст ячейки - разве это вам надо?
2884  Qt / 2D и 3D графика / Re: QLinearGradient bugs? : Март 17, 2010, 10:32
Остается 2 выхода - либо самому заполнять image градиентом либо тупо создать image (2^15 x 1) и залить его как делаете вы и уже потом scale-нуть этот image в image нужного вам размера. Для плавности переходов можно задействовать Qt::SmoothTransformation.
2885  Qt / Пользовательский интерфейс (GUI) / Re: QListViewItem : Март 17, 2010, 09:48
Можно, конечно, и так.
Только обычно делают немного по-другому - используют только одну кнопку и двигают на текущую ячейку, а для остальных ячеек кнопку отрисовывают сами.
К тому же это неэффективно в случае большой таблицы.
Интересно, а как вы решили вопрос с фокусом для текущей ячейки/кнопки и отображением текущей строки.
И как работает прокрутка через Up/Down.

К тому же вы забыли определить
virtual int width ( const QFontMetrics & fm, const QListView * lv, int c );
// QListViewItem::paintCell() - if you reimplement this function, you should also reimplement width().
Ведь QListView без этого никогда не узнает реальный размер ячейки.

2886  Qt / Пользовательский интерфейс (GUI) / Re: QListViewItem : Март 16, 2010, 14:55
Наследуйся от QListViewItem и уже в его paintCell() рисуй кнопки используя QStyle::drawPrimitive().
Можно посмотреть исходники PropertiesEditor-a designer-a tools/designer/designer/propertyeditor.cpp
2887  Qt / 2D и 3D графика / Re: Маштабирование изображения в GraphicsView : Март 16, 2010, 09:23
Это только у меня с утра в глазах двоится?
Вопрос нужно в эту ветку.
Цитировать
видимо надо использовать scale()
Да, его. В paint() QGraphicsItem-a задаем scale() с учётом размера изображения и самого элемента и не забываем учитывать текущие трансформации.
2888  Qt / Пользовательский интерфейс (GUI) / Re: Фиксированный размер диалога под Windows : Март 15, 2010, 17:33
Цитировать
Напиши саггест по этому поводу, посмотрим что ответят: http://bugreports.qt.nokia.com
Покапавшись в исходниках Qt обнаружил нужный мне атрибут Qt::WA_DontShowOnScreen.
Т.е. у Qt всё нужное уже есть, только не для нас Грустный
Перед show() достаточно выставить этот атрибут и окно не появится.
Только вот, чтобы заставить его появиться одно выключение сего атрибута не помогает Грустный Помимо этого нужно сбросить Qt::WA_WState_ExplicitShowHide выставленный в QWidget::setVisible() и уже после этого по-новой вызывать QWidget::setVisible( true ).

Вот так я избавился от глюка при восстановлении панелей главного окна:

Код
C++ (Qt)
void MainWindow::setVisible( bool set )
{
if( set )
setAttribute( Qt::WA_DontShowOnScreen, true );
 
restoreGeometry( g );
restoreState( s )
 
QWidget::setVisible( set );
 
if( set && testAttribute( Qt::WA_DontShowOnScreen ) )
{
setAttribute( Qt::WA_DontShowOnScreen, false );
setAttribute( Qt::WA_WState_ExplicitShowHide, false );
QTimer::singleShot( 5, this, SLOT( show() ) );
}
}
 
2889  Qt / Пользовательский интерфейс (GUI) / Re: QWizard, "работающая" QWizardPage : Март 15, 2010, 14:00
Хм, странно...

Тогда в конструктор WIZARD-а добавь

connect( this, SIGNAL( currentIdChanged( int ) ), SLOT( showPage( int ) ) );

и в нём же пропиши слот

Код
C++ (Qt)
void WIZARD::showPage( int id )
{
   if( id == 1 )
   {
      Two* two = dynamic_cast< Two* >( page( id ) );
      two->test();
   }
}
 
2890  Qt / Пользовательский интерфейс (GUI) / Re: Фиксированный размер диалога под Windows : Март 15, 2010, 12:28
На самом деле считаю такую политику Qt, что о том,
что отработали все geometry/layout managers, мы можем узнать уже только в QEvent::Show, ущербной.
Мне раньше довольно-таки много приходилось писать на Xt/Motif.
Так вот в Xt у виджета есть очень полезное свойство mappedWhenManaged, отключив которое можно заставить
отработать все geometry managers без появления самого окна.
Очень жалко, что в Qt такого нет.
2891  Qt / Пользовательский интерфейс (GUI) / Re: QWizard, "работающая" QWizardPage : Март 15, 2010, 11:52
Цитировать
Это не работает!
Хм, объясните почему?

Цитировать
... нужно сделать отдельный поток ...
И зачем так всё усложнять?
2892  Qt / Пользовательский интерфейс (GUI) / Re: QWizard, "работающая" QWizardPage : Март 15, 2010, 11:40
Замените
Код
C++ (Qt)
void Two::initializePage() {
   test();
}
 
на
Код
C++ (Qt)
void Two::setVisible( bool set ) {
   QWizardPage::setVisible( set );
   if( set )
     test();
}
 
2893  Qt / Пользовательский интерфейс (GUI) / Re: Как сделать нестандартный вид : Март 11, 2010, 15:28
Согласен, но если требуется composing, то этот номер не пройдёт.
2894  Qt / Пользовательский интерфейс (GUI) / Re: Как сделать нестандартный вид : Март 11, 2010, 12:07
Покопавшись ещё раз в исходниках Qt понял следующее.

Для каждого top-level окна создается QWidgetBackingStore класс, в котором создается QWindowSurface класс
и уже в нём создается off-screen pixmap соответствующий размеру top-level окна. Этот pixmap при изменении размера окна _всегда_ пересоздается, т.к. pixmaps не могут динамически менять размер.
XRenderComposite() в основном используется для рендеринга статических текстур.
Отрисовка всех drawPrimitivies делается через QImage с последующим копированием в off-screen pixmap.

Вообщем визуально всё это выглядит конечно красиво, но ожидать мега скорости от такого подхода не стоит - за всё нужно платить Грустный
2895  Qt / Пользовательский интерфейс (GUI) / Re: Как сделать нестандартный вид : Март 11, 2010, 10:46
Цитировать
Т.е. по твоему получается, что QPixmap не ускоряет вывод, а даже замедляет его?
Это где это я такое говорил?
Я просто сказал, что QPixmap тяжелый ресурс. Известны случаи, когда у GDI съезжала крыша при большом количестве созданных pixmap-ов.
Конечно, QPixmap, находящийся в памати Xserver-a/GDI отрисуется намного быстрее, чем QImage находящийся в памяти процесса.
Цитировать
А как быть с аппаратным 2D-ускорением? Как его можно задействовать при рендеринге в память?
А вот это для меня большой вопрос. Задействована ли 2D акселерация в Qt4.x вообще.
Цитировать
Если посмотреть исходники Qt на предмет того, что там используется для отрисовки, то почти везде для формирования используется QPixmap, а не QImage.
Я боюсь, что исходники вы смотрели невнимательно. Если сидите на X-ах, то под отладчиком поставьте breakpoint на XPutImage и всё сами увидите.
Страниц: 1 ... 191 192 [193] 194 195

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