Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > С/С++: Кроссплатформенное программирование, Qt/Gtk+/wxWidgets > Qt4. Наложение виджетов


Автор: X-3R1 2.9.2010, 13:22
Каким образом наложить два виджета друг на друга.
К примеру есть одна картинка (но она реализована через QWidget) и другая, необходимо наложить друг на друга и посмотреть различие.
Нашёл QStackedLayout, но его ещё не тестировал.

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

Автор: borisbn 2.9.2010, 15:47
Цитата(X-3R1 @  2.9.2010,  13:22 Найти цитируемый пост)
К примеру есть одна картинка (но она реализована через QWidget)

поясни. не понятно

Автор: X-3R1 2.9.2010, 16:11
Цитата(borisbn @ 2.9.2010,  13:47)
Цитата(X-3R1 @  2.9.2010,  13:22 Найти цитируемый пост)
К примеру есть одна картинка (но она реализована через QWidget)

поясни. не понятно

Грубо говоря QWidget, во весь виджет QLabel с загруженной PNG =)

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

Автор: borisbn 3.9.2010, 10:00
Когда ты загружаешь картинку в QLabel ( setPixmap ), просто сохрани этот pixmap в QPixmap'е
Код

не
label->setPixmap( "filename.png" );
а
QPixmap p( "filename.png" );
label->setPixmap( p );

а затем делай прозрачным этот pixmap
см. пример из QtDemos:
%QTDIR%\demos\composition\

Автор: X-3R1 6.9.2010, 14:00
Конкретный пример.
user posted image

Имеется виджет. 
Он должен загрузить один виджет, содержащий в себе кнопку. И ещё один виджет, с другой кнопкой. Необходимо наложить друг на друга, и иметь возможность изменять прозрачность

На данный момент положил два виджета в QStackedLayout. Поставил 
Код

_stackedLayout.setStackingMode(QStackedLayout::StackAll);

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

Прозрачность тоже не удалось изменить, пытался изменять через
Код

QWidget::setWindowOpacity


Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)