Qt C ++创建工具栏

时间:2015-09-10 03:57:57

标签: c++ qt toolbar

我正在学习Qt,并在“Qt开发的基础”一书中尝试了一些例子。 在本书中,有一节教授单文档界面,其中一个示例创建了一个简单的应用程序,如记事本。 但是我的工具栏创建有问题。

MainWindow::MainWindow(QWidget *parent) :
    QMainWindow(parent),
    ui(new Ui::MainWindow)
{
    ui->setupUi(this);
    setAttribute(Qt::WA_DeleteOnClose);
    setWindowTitle(QString("%1[*] - %2").arg("unnamed").arg("SDI"));

    connect(ui->docWidget->document(), SIGNAL(modificationChanged(bool)), this, SLOT(setWindowModified(bool)));

    createActions();
    createMenu();
    createToolbars();

    statusBar()->showMessage("Done");    
}

它是主窗口的构造函数。

void MainWindow::createToolbars()
{
    QToolBar* toolbar;
    toolbar = addToolBar(tr("File"));
    toolbar->addAction(anyaction);
}

这是本书创建工具栏的方式。 但是,当我尝试运行该程序时,会创建两个工具栏。 一个是由代码创建的工具栏,称为“文件” 另一个是由ui设计师创建的空白工具栏即。 *ui.toolbar

为了摆脱两个工具栏,我尝试只使用*ui.toolbar。 它正在发挥作用。代码如下所示。

void MainWindow::createToolbars()
{
    ui->toolBar->addAction(anyaction);
}

但我试图仅通过代码创建工具栏,即。不在ui设计器中添加工具栏。 所以我写这个:

void MainWindow::createToolbars()
{
    QToolBar* FileBar = this->addToolBar(tr("File"));
    FileBar->addAction(anyaction);
}

但是,存在编译错误。 编译器使用此函数:

void QMainWindow::addToolBar(QT::ToolBarArea area, QToolBar * toolbar)

而不是我想要的:

QToolBar * QMainWindow::addToolBar(const QString & title)

http://doc.qt.io/qt-5/qmainwindow.html#addToolBar-3

我的错误是什么?

1 个答案:

答案 0 :(得分:2)

QToolBar移除MainWindow时,QtCreator会自动删除QToolBar类的导入。

只需将其添加到mainwindow.h的顶部:

#include <QToolBar>

最好在QToolBar* FileBar private的{​​{1}}部分中定义MainWindow。然后,您将能够从mainwindow.h类的任何方法访问它。

MainWindow

当你看到这样的消息时:

  

必须指向class / struct / union / generic类型

首先尝试为必要的类添加标题。