Qt Pb带QAction、QToolBar、QToolButton
我这里有个问题 我正在构建一个Qt应用程序,它使用slidingStackedWidgets从一个页面滑动到另一个页面 我有两个工具栏,一个是topToolBar,一个是bottomToolBar,当中心部件移动时它们不会滑动 所以我在我的主窗口中声明了一个QActionQt Pb带QAction、QToolBar、QToolButton,qt,button,action,toolbar,Qt,Button,Action,Toolbar,我这里有个问题 我正在构建一个Qt应用程序,它使用slidingStackedWidgets从一个页面滑动到另一个页面 我有两个工具栏,一个是topToolBar,一个是bottomToolBar,当中心部件移动时它们不会滑动 所以我在我的主窗口中声明了一个QAction QAction *backToMainVert; 在我的mainWindow.cpp中,当我通过单击按钮调用第二个视图时,我调用一个slideInAdd()方法,如下所示: slidingStacked->slide
QAction *backToMainVert;
在我的mainWindow.cpp中,当我通过单击按钮调用第二个视图时,我调用一个slideInAdd()方法,如下所示:
slidingStacked->slideInIdx(1); //this takes me back to my second page
backToMainVert = this->topToolBar->addWidget(backBarButton);
//this adds a backButton to the topToolBar
现在backBarButton连接到一个slideToMain()方法,当触发该方法时,它会将我带回第一页,并从topToolBar中删除backBarButton
this->topToolBar->removeAction(backToMainVert);
slidingStacked->slideInIdx(0);
第一次切换到第二页时,没问题,我的按钮已创建并显示在我的topToolBar上
当我单击backBarButton时,它会返回到第一页
但是当我第二次想从第一页返回到第二页时,backBarButton从未出现
呃,也许这会有所帮助,下面是我实例化backBarButton的方法:
backBarButton = new QToolButton(this);
backBarButton->setText("Retour");
backBarButton->setFixedSize(80,30);
backBarButton->setStyleSheet("background-image: url(:/ToolBarButton.png);"
"background-repeat: no-repeat;"
"background-position: center center;"
"border:0;"
"color : white;"
"font-family: System;"
"font-style: bold;"
"font-size: 9pt;"
"color : white;");
你知道我遗漏了什么吗
提前谢谢,我卡住了
迈克
你好,世界 有人能提出另一种实现工具栏的方法吗? 我希望我能自己找到,但是Qt里面的调试器 没有给我太多的细节。它甚至没有停在我的断点上。 我应该从哪里开始 谢谢你的帮助 迈克
好的,伙计们 似乎唯一的方法是在slideInAdd()方法的topToolBar中添加一个QAction 在slideInMainVert()方法中: 它是这样工作的,但问题是我不知道如何自定义出现在topToolBar中的QToolButton。我希望它比默认大小大(比如说…100x30),上面有一些文字(实际上就像一个按钮) 你能帮我吗 非常感谢
迈克我终于找到了办法 准备好了吗 1) 因此,首先我们创建一个小部件,它将包含容纳按钮的布局:
QWidget * toolBarContainerWidget = new QWidget(this);
2) 然后我们创建包含按钮的布局
QHBoxLayout *toolBarLayout = new QHBoxLayout(toolBarContainerWidget);
3) 然后我们创建backButton:
QPushButton *testButton = new QPushButton("Go Back !",toolBarContainerWidget);
testButton->setFixedSize(80,20);
testButton->setStyleSheet("background-image: url(:/ToolBarButton.png);"
"background-repeat: no-repeat;"
"background-position: center center;"
"border:0;"
"color : white;"
"font-family: System;"
"font-style: bold;"
"font-size: 9pt;"
"color : white;");
4) 现在,我们将testButton添加到工具栏布局中:
toolBarLayout->addWidget(testButton);
5) 我们将布局设置为toolBarContainerWidget:(此时大脑开始出汗…;-))
6) 我们将此小部件添加到工具栏:
topToolBar->addWidget(toolBarContainerWidget);
7) 我们将按钮连接到slideInMainVert()方法:
8) 当我们滑回第一页时,我们使用:
topToolBar->clear();
这将清除工具栏
嗯,我得承认这有点复杂,但我还没找到更好的办法。
如果你们有什么建议,请告诉我
希望这能帮上忙
迈克
toolBarContainerWidget->setLayout(toolBarLayout);
topToolBar->addWidget(toolBarContainerWidget);
QObject::connect(testButton,SIGNAL(clicked()),this,SLOT(slideInMainVert()));
topToolBar->clear();