开发者

Qt transparent widgets

开发者 https://www.devze.com 2023-03-02 19:04 出处:网络
Just a quick question. I\'m building my app interface at the moment with Qt. I set a background image for the mainpage and开发者_StackOverflow社区 I use stackedWIdgets to slide from one window to ano

Just a quick question.

I'm building my app interface at the moment with Qt. I set a background image for the mainpage and开发者_StackOverflow社区 I use stackedWIdgets to slide from one window to another.

setStyleSheet("background-image: url(:/spherebackground.png);"
                        "background-repeat: no-repeat;"
                        "background-position: center center");

When the application starts, a page appears which is made of 3 layouts:

1) One that contains a topToolbar Widget with QPushButtons, and a label displaying the PageTitle 2) in the middle, a mainPageLayout that contains the SlidingStackedWidgets 3) the BottomToolBar

The mainFrameWidget contains a mainFrameLayout:

mainPageWidget=new QWidget();

mainPageLayout=new QVBoxLayout();

//I add the buttons and others
mainPageLayout->addWidget(addEntryButton);
mainPageLayout->addWidget(vocaButton);
mainPageLayout->addWidget(exprButton);
mainPageLayout->addWidget(rulesButton);
mainPageLayout->addWidget(learnButton); 

mainPageWidget->setLayout(mainPageLayout);

Then, I have the other pages created with the designer

And then a function that add the pages to the slidingStacked

 void MainWindow::createSlidingStackedWidget() {
 //the slidingStacked is the Widget that contains the subslidingWidgets

 slidingStacked= new SlidingStackedWidget(this);
 slidingStacked->addWidget(mainPageWidget);
 quickAddView = new QuickAddController(); //which is a UI widget
 slidingStacked->addWidget(quickAddView);

 }

And then, when a button in the mainLayout is pressed, it triggers a function like this

void MainWindow::slideInAdd(){
topToolBar->clear();
slidingStacked->setVerticalMode(true);
slidingStacked->slideInIdx(1);
setupTopToolBar("Terminer","Ajout Entrée","Modifier");
bottomToolBar->hide();
QObject::connect(goBackButton,SIGNAL(clicked()),this,SLOT(backFromAdd()));
}

The thing is that I'm trying to port an application I created for the IPhone and I want it to have the same "Look and Feel" but when I slide from one page to another...

1) the animation flickers 2) I would like the sliding widgets to be transparent except for the controls (QPushButtons...) but they have the same sphere background as the one I set up at the beginning of the code 3) My labels and controls also have the same background image when I would like them to be standard (eg : a label should have a white background)

I can't figure out why...

Hope this will give you a better idea of what's going on...


So far as 2) and 3) go, that is because widgets inherit their parent's palette by default. To fix this, you can explicitly style them, or assign their palette to be the default application palette after they are created. I don't know how to handle the first problem.

0

精彩评论

暂无评论...
验证码 换一张
取 消