我在这里遇到了问题。
我正在构建一个使用slidingStackedWidgets的Qt应用程序,以便从一个页面滑动到另一个页面。
我有2个工具栏,一个topToolBar和一个bottomToolBar,当中央窗口小部件移动时不会滑动。
所以我在mainWindow.h中声明了一个QAction
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;");
知道我在这里失踪了吗?
提前谢谢,我被困住了。
迈克迈克Hello World,
有人可以建议另一种方法来实现ToolBar吗? 我希望自己可以找到Qt里面的调试器 没有给我很多细节。它甚至不会停留在我的断点上。 我应该从哪里开始?
感谢您的帮助。
麦克
好的,
似乎唯一的方法是在slideInAdd()方法中向topToolBar添加QAction。
void MainWindow::slideInAdd(){
slidingStacked->setVerticalMode(true);
slidingStacked->slideInIdx(1);
backAction = new QAction(QIcon(":/ToolBarButton.png"), tr("&Retour"), this);
topToolBar->addAction(backAction);
connect(this->backAction,SIGNAL(triggered()),this, SLOT(slideInMainVert()));
}
,这在slideInMainVert()方法中:
this->topToolBar->removeAction(backAction);
它正在以这种方式工作,但问题是我无法弄清楚如何自定义topToolBar中出现的QToolButton。我希望它大于默认大小(比如...... 100x30),上面有一些文字(实际上就像一个按钮)。
你能帮我吗?
非常感谢...
麦克
答案 0 :(得分:2)
我终于找到了办法!!!
准备好了吗?
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:
toolBarLayout->addWidget(testButton);
5)我们将布局设置为toolBarContainerWidget :(这里大脑开始出汗...; - ))
toolBarContainerWidget->setLayout(toolBarLayout);
6)我们将这个小部件添加到我们的工具栏:
topToolBar->addWidget(toolBarContainerWidget);
7)我们将Button连接到slideInMainVert()方法:
QObject::connect(testButton,SIGNAL(clicked()),this,SLOT(slideInMainVert()));
8)当我们滑回第一页时,我们使用:
topToolBar->clear();
清除toolBar ...
呃,好吧,我不得不承认它有点复杂,但我找不到更好的方法。 如果你们有任何建议,请告诉我......希望这无论如何都可以帮助......
迈克迈克