Russian Qt Forum

Qt => Пользовательский интерфейс (GUI) => Тема начата: Namelles One от Декабрь 16, 2005, 11:08



Название: Нестандартные окна, кнопки и т.д.
Отправлено: Namelles One от Декабрь 16, 2005, 11:08
Огромная просьба ко всем добрым людям...

Обьясните популярно плиз, каким образом вместо стандартной прямоугольной формы наложить картинку, сказав ей, что она - форма...

То же самое с кнопками...

А то ничего не получается...

С использованием WinAPI - картинка становится формой, но так как мы работаем на кросплатфоррменной библиотеке - о каком API может идти речь ?


Название: Нестандартные окна, кнопки и т.д.
Отправлено: Dendy от Декабрь 16, 2005, 12:11
Дивитися:

Код:
QWidget::setMask()
QStyle
QStyleHintReturnMask


Название: Нестандартные окна, кнопки и т.д.
Отправлено: Namelles One от Декабрь 16, 2005, 17:28
Ой блин...
Спасибо конечно за функции, но я же тупой...

Название эти я уже видел, другой вопрос, что в документации ничего непонятно...

Как регионы накладываются?
Как из картинки получить нестандартный регион?
Как на кнопку так наложить, чтобы прямугольником все не резалось?

А вот фиг его знает...


Название: Нестандартные окна, кнопки и т.д.
Отправлено: Sergey B. от Декабрь 17, 2005, 01:28
Цитата: "Namelles One"
Ой блин...
Спасибо конечно за функции, но я же тупой...

Название эти я уже видел, другой вопрос, что в документации ничего непонятно...

Как регионы накладываются?
Как из картинки получить нестандартный регион?
Как на кнопку так наложить, чтобы прямугольником все не резалось?

А вот фиг его знает...


Да я вот тож усё хочу попробовать стиль написать аля Mac os X
плагином... да чёт некогда.. работа по сменам (qt уже 1,5 месяца не щупал... истосковался)... да и хотелось бы пример поглядеть пошаговый...
Всё жду Qt41 уж люблю я тулбары  и менюшьки рисовать дизайнером...


Название: Нестандартные окна, кнопки и т.д.
Отправлено: Namelles One от Декабрь 17, 2005, 09:15
Так.
1. А че такого крутого будет в Qt 4.1 ??
2. Млин. Меня все неверно поняли.
Одно дело стиль, а другое дело - окно нестандартное...
Вот откроте Неро последний - вот вам и нестандартное окно, не прямоугольное, а фигурное...

WinAPI так умеет, но умеет ли так Qt ????


Название: Нестандартные окна, кнопки и т.д.
Отправлено: zlatko от Декабрь 17, 2005, 11:57
спробуй шось типу того
Код:

QPixmap pxPicture( "picture.png");
QToolButton newTb;
newTb.resize( pxPicture.size() );
newTb.setUsesBigPixmap( true );
newTb.setMask( pxPicture.createHeuristicMask() );
newTb.setPixmap( pxPicture );
newTb.show();


Название: Нестандартные окна, кнопки и т.д.
Отправлено: Namelles One от Декабрь 17, 2005, 14:09
Хм...
Данный код пости работаеТ, проблема одна - QToolButton не имеет метода setPixmap() ...
И никакой замены в доках я ему не нашел...

В дополнение...
С окном все прокатило изумительно, ибо на него накладывается , а на него уже в свою очередь картинка...

Но проблема кнопки так до конца и не решена...


Название: Нестандартные окна, кнопки и т.д.
Отправлено: zlatko от Декабрь 17, 2005, 15:58
используй QButton


Название: Нестандартные окна, кнопки и т.д.
Отправлено: Namelles One от Декабрь 18, 2005, 09:39
Неверно.

Но тем не менее проблема кнопки решена...

Код:
 
       QMainWindow mw;

       QWidget central(&mw);
       QPixmap pxPicture( "IceFriend.png");
       QToolButton newTb(&central);
       newTb.resize( pxPicture.size() );
       newTb.setMask( pxPicture.createHeuristicMask() );
       newTb.setIcon( pxPicture );
       newTb.setIconSize( pxPicture.size() );
       newTb.show();

       QObject::connect(&newTb, SIGNAL(clicked()), &app, SLOT(quit()));

       mw.setCentralWidget(&central);
       mw.show();


Правда нажатие выглядит немного странно, но главное - все работает...

И встречный вопрос : А можно ли моменты нажатия кнопки и т.д. - тоже заменить картинками?
То есть картинка не нажатой кнопки, картинка нажатой кнопки и т.д.


Название: Нестандартные окна, кнопки и т.д.
Отправлено: zlatko от Декабрь 18, 2005, 15:28
поиграйся з класом QIconSet


Название: Нестандартные окна, кнопки и т.д.
Отправлено: Racheengel от Декабрь 19, 2005, 10:45
или свой класс напиши, переопределив отрисовку стандартной кнопки