Qt透明小部件

时间:2011-05-05 06:55:23

标签: qt overlay widget transparent

只是一个简单的问题。

我正在使用Qt构建我的应用程序界面。 我为主页设置了一个背景图像,我使用stackedWIdgets从一个窗口滑动到另一个窗口。

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

当应用程序启动时,会出现一个由3个布局组成的页面:

1)包含带有QPushButtons的topToolbar Widget和显示PageTitle的标签 2)在中间,包含SlidingStackedWidgets的mainPageLayout 3)BottomToolBar

mainFrameWidget包含一个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);

然后,我用设计师

创建了其他页面

然后是一个将页面添加到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);

 }

然后,当按下mainLayout中的按钮时,它会触发像这样的函数

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()));
}

问题是我正在尝试移植我为iPhone创建的应用程序,我希望它具有相同的“外观和感觉”,但是当我从一个页面滑动到另一个页面时......

1)动画闪烁 2)我希望滑动小部件是透明的,除了控件(QPushButtons ...)    但它们的球体背景与我在代码开头设置的球体背景相同 3)当我希望它们成为标准时,我的标签和控件也具有相同的背景图像 (例如:标签应该有白色背景)

我无法弄清楚为什么......

希望这能让你更好地了解正在发生的事情......

1 个答案:

答案 0 :(得分:0)

到目前为止2)和3)go,这是因为小部件默认继承了父级的调色板。要解决此问题,您可以显式设置它们的样式,或者在创建它们之后将其调色板指定为默认应用程序调色板。我不知道如何处理第一个问题。