Qt Pb与QAction,QToolBar,QToolButton

时间:2011-04-29 14:32:12

标签: qt button action toolbar

我在这里遇到了问题。

我正在构建一个使用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),上面有一些文字(实际上就像一个按钮)。

你能帮我吗?

非常感谢...

麦克

1 个答案:

答案 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 ...

呃,好吧,我不得不承认它有点复杂,但我找不到更好的方法。 如果你们有任何建议,请告诉我......

希望这无论如何都可以帮助......

迈克迈克