Russian Qt Forum
Июля 06, 2025, 15:03 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
 
  Начало   Форум  WIKI (Вики)FAQ Помощь Поиск Войти Регистрация  

Страниц: [1]   Вниз
  Печать  
Автор Тема: QMainWidget раскраска сплитерных полосок между DockWidget  (Прочитано 4671 раз)
bosfor
Гость
« : Июня 17, 2011, 10:31 »

Отрисовал рисунок на QMainWidget теперь между Доквиджетовыми окнами просвечивается этот рисунок. Как можно изменить цвет сплитерных полосок ? Сделать их не прозрачными ?
Записан
GreatSnake
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 2921



Просмотр профиля
« Ответ #1 : Июня 17, 2011, 10:37 »

Настройка QMainWindow.
Записан

Qt 5.11/4.8.7 (X11/Win)
bosfor
Гость
« Ответ #2 : Июня 17, 2011, 14:17 »

Применяю указанный стиль:
Код:
setStyleSheet("QMainWindow::separator { background: yellow; width: 10px;  height: 10px; } QMainWindow::separator:hover { background: red; }");
но применяется только размер а цвет по прежнему прозрачный ... ?
Записан
bosfor
Гость
« Ответ #3 : Июня 17, 2011, 15:44 »

Установка цвета сепаратора работает если я убираю рисунок заднего фона который делаю так:
Код:
void MainWindow::paintEvent(QPaintEvent *)
{
    QPixmap backgroundPixmap;
    backgroundPixmap.load(":/pictures/images/juju.png"); backgroundPixmap=backgroundPixmap.scaled(this->size().width(),size().height());
    QPainter painter;
     painter.begin(this);
     painter.drawPixmap(0, 0, backgroundPixmap);
     painter.end();
}

как быть в этом случае ?
Записан
GreatSnake
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 2921



Просмотр профиля
« Ответ #4 : Июня 17, 2011, 18:43 »

Мдя...
при каждой отрисовке, которая может быть делаться довольно часто, грузится файл картинки, потом из этого файла получается пиксмап, потом из этого пиксмапа получаем новый масштабированный.
К тому же своим MainWindow::paintEvent() ты вообще убиваешь отрисовку сплиттеров.
Вот работающее рещение:
Код
C++ (Qt)
#include <QApplication>
#include <QMainWindow>
#include <QDockWidget>
#include <QPainter>
#include <QPaintEvent>
 
class MainWindow : public QMainWindow
{
public:
MainWindow( const QString& fn, QWidget* p = 0 )
: QMainWindow( p )
{
bg_.load( fn );
br_.setTextureImage( bg_ );
}
 
protected:
 
bool event( QEvent* e )
{
if( e->type() == QEvent::Paint )
{
QPaintEvent* pe = static_cast< QPaintEvent* >( e );
QPainter p( this );
 
br_.setMatrix( QMatrix(
qreal( width() ) / qreal( bg_.width() ), 0, 0,
qreal( height() ) / qreal( bg_.height() ), 0, 0 ) );
p.setPen( Qt::NoPen );
p.setBrush( br_ );
p.drawRect( pe->rect() );
}
return QMainWindow::event( e );
}
private:
QImage bg_;
QBrush br_;
};
 
int main( int argc, char** argv )
{
QApplication app( argc, argv );
MainWindow mw( argc > 1 ? argv[1] : "" );
 
QDockWidget dw[4];
 
for( int i = 0; i < 4; i++ )
{
dw[i].setWindowTitle( QString( "Dock %1" ).arg( i + 1 ) );
mw.addDockWidget( Qt::DockWidgetArea( 1 << i ), &dw[i] );
}
 
QWidget w;
mw.setCentralWidget( &w );
 
mw.show();
 
return app.exec();
}
 

На вход собранной аппликухи дай любую картинку)
Записан

Qt 5.11/4.8.7 (X11/Win)
daimon
Гость
« Ответ #5 : Июня 17, 2011, 21:35 »

CSS (через дизайнер настроить) и всё
Записан
GreatSnake
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 2921



Просмотр профиля
« Ответ #6 : Июня 17, 2011, 22:44 »

CSS (через дизайнер настроить) и всё
Ну-ну. Вот возьми и настрой. И не забудь нам показать.
Записан

Qt 5.11/4.8.7 (X11/Win)
daimon
Гость
« Ответ #7 : Июня 19, 2011, 13:22 »

CSS (через дизайнер настроить) и всё
Ну-ну. Вот возьми и настрой. И не забудь нам показать.
если то, то вот http://www.prog.org.ru/index.php?topic=18403.msg123807#msg123807
Записан
GreatSnake
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 2921



Просмотр профиля
« Ответ #8 : Июня 19, 2011, 13:38 »

Нет не то. Читай сначала. Проблема в другом.
Записан

Qt 5.11/4.8.7 (X11/Win)
bosfor
Гость
« Ответ #9 : Июня 20, 2011, 13:32 »

Мдя...
...
На вход собранной аппликухи дай любую картинку)

Спасибо за предоставленное решение !
Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


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