Qt Pb带QAction、QToolBar、QToolButton

Qt Pb带QAction、QToolBar、QToolButton,qt,button,action,toolbar,Qt,Button,Action,Toolbar,我这里有个问题 我正在构建一个Qt应用程序,它使用slidingStackedWidgets从一个页面滑动到另一个页面 我有两个工具栏,一个是topToolBar,一个是bottomToolBar,当中心部件移动时它们不会滑动 所以我在我的主窗口中声明了一个QAction QAction *backToMainVert; 在我的mainWindow.cpp中,当我通过单击按钮调用第二个视图时,我调用一个slideInAdd()方法,如下所示: slidingStacked->slide

我这里有个问题

我正在构建一个Qt应用程序,它使用slidingStackedWidgets从一个页面滑动到另一个页面

我有两个工具栏,一个是topToolBar,一个是bottomToolBar,当中心部件移动时它们不会滑动

所以我在我的主窗口中声明了一个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;");
你知道我遗漏了什么吗

提前谢谢,我卡住了

迈克


你好,世界

有人能提出另一种实现工具栏的方法吗? 我希望我能自己找到,但是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();