Qt c++创建工具栏

Qt C++ Creating toolbar

本文关键字:工具栏 创建 c++ Qt      更新时间:2023-10-16

我正在学习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设计器ie创建的空白工具栏。*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

我错在哪里?

当您从MainWindow中删除QToolBar时,QtCreator自动删除了QToolBar类的导入。

把这个添加到mainwindow.h:

#include <QToolBar>

最好在mainwindow.hMainWindowprivate section中定义QToolBar* FileBar。然后,您将能够从MainWindow类的任何方法访问它。

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

当你看到这样的消息:

必须指向类/结构/联合/泛型类型

首先尝试包含必要类的头。