c++ - Qt C++ 创建工具栏

标签 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);
}

这就是本书创建工具栏的方法。 但是,当我尝试运行该程序时,创建了两个工具栏。 一种是由代码创建的工具栏,称为"file" 另一个是由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部分定义QToolBar* FileBar。然后您将能够从 MainWindow 类的任何方法访问它。

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

当您看到这样的消息时:

must point to class/struct/union/generic type

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

关于c++ - Qt C++ 创建工具栏,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32492897/

相关文章:

android - 如何处理 amazon kindle fire 上的底部工具栏

c++ - 为其他平台编译

以 Nav Drawer 按钮为中心的 Android 工具栏图像

c++ - 我的VS Code终端无法显示任何内容或给我一个错误。不知道为什么不打印

python - Qtablewidget去除黑色空间PyQt5

qt - QDBusAbstractAdaptor 对象不导出已实现的 dbus 接口(interface)

qt - 如何使用静态构建的 Qt 解决此 'no service found for - “org.qt-project.qt.mediaplayer” ' 错误?

c# - 在工具栏上动态显示自定义 Visual Studio VSPackage 命令

c++ - MISRA C++(规则 18-4-1)和动态内存分配 - 是否允许 std::string?

c++ - 如何在不设置快捷方式的情况下在菜单栏上打印快捷方式文本?