Qt透明小部件
只是一个简单的问题 我正在用Qt构建我的应用程序界面。 我为主页设置了一个背景图像,并使用stackedWIdgets从一个窗口滑动到另一个窗口Qt透明小部件,qt,overlay,widget,transparent,Qt,Overlay,Widget,Transparent,只是一个简单的问题 我正在用Qt构建我的应用程序界面。 我为主页设置了一个背景图像,并使用stackedWIdgets从一个窗口滑动到另一个窗口 setStyleSheet("background-image: url(:/spherebackground.png);" "background-repeat: no-repeat;" "background-position: center cente
setStyleSheet("background-image: url(:/spherebackground.png);"
"background-repeat: no-repeat;"
"background-position: center center");
当应用程序启动时,将出现一个由3个布局组成的页面:
1) 一个包含带有QPushButtons的topToolbar小部件和显示页面标题的标签的小部件
2)在中间,包含StimeStkkEdWIDs的主页面
3) 底部工具栏
mainFrameWidget包含一个mainFrameLayout:
mainPageWidget=新的QWidget()
mainPageLayout=新的QVBoxLayout()
然后,我用设计器创建了其他页面
然后是一个将页面添加到幻灯片的函数
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);
}
然后,当按下主布局中的一个按钮时,它会触发如下功能
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) 当我希望标签和控件成为标准时,它们也具有相同的背景图像
(例如:标签应具有白色背景)
我不明白为什么
希望这能让您更好地了解正在发生的事情……至于2)和3)go,这是因为小部件默认情况下会继承其父组件的调色板。要解决此问题,可以显式设置它们的样式,或者在创建它们之后将它们的调色板指定为默认应用程序调色板。我不知道如何处理第一个问题。Mike,你能发布更多的代码吗?这样我们就可以了解你是如何构造堆叠的小部件的,以及你将样式表应用到哪些小部件上的。@Jordan:给你,更多的代码。希望它能帮助您理解“或在创建它们之后将它们的调色板指定为默认应用程序调色板”。你能告诉我这是什么样子的代码吗?我是Qt新手,不知道怎么做?谢谢你的帮助。
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()));
}