Qt C++ 创建工具栏
Qt C++ Creating toolbar
我正在学习 Qt 并尝试书中的一些示例 "Foundations of Qt Development"。
在这本书中,有一节讲授单文档界面,并举例说明如何创建一个像记事本这样的简单应用程序。
但是我在创建工具栏时遇到问题。
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");
}
它是主window的构造函数。
void MainWindow::createToolbars()
{
QToolBar* toolbar;
toolbar = addToolBar(tr("File"));
toolbar->addAction(anyaction);
}
本书就是这样创建工具栏的。
但是,当我尝试 运行 程序时,创建了两个工具栏。
一个是代码创建的工具栏,名为 "File"
另一个是由 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
我这里的错误是什么?
当您从 MainWindow
中删除 QToolBar
时,QtCreator 会自动删除 QToolBar
class.
的导入
只需将此添加到 mainwindow.h
的顶部:
#include <QToolBar>
最好在mainwindow.h
中MainWindow
的private
部分定义QToolBar* FileBar
。然后,您将能够通过 MainWindow
class.
的任何方法访问它
void MainWindow::createToolbars()
{
FileBar = this->addToolBar(tr("File"));
FileBar->addAction(anyaction);
}
当您看到这样的消息时:
must point to class/struct/union/generic type
首先尝试包含 headers 以获取必要的 class。
我正在学习 Qt 并尝试书中的一些示例 "Foundations of Qt Development"。 在这本书中,有一节讲授单文档界面,并举例说明如何创建一个像记事本这样的简单应用程序。 但是我在创建工具栏时遇到问题。
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");
}
它是主window的构造函数。
void MainWindow::createToolbars()
{
QToolBar* toolbar;
toolbar = addToolBar(tr("File"));
toolbar->addAction(anyaction);
}
本书就是这样创建工具栏的。
但是,当我尝试 运行 程序时,创建了两个工具栏。
一个是代码创建的工具栏,名为 "File"
另一个是由 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
我这里的错误是什么?
当您从 MainWindow
中删除 QToolBar
时,QtCreator 会自动删除 QToolBar
class.
只需将此添加到 mainwindow.h
的顶部:
#include <QToolBar>
最好在mainwindow.h
中MainWindow
的private
部分定义QToolBar* FileBar
。然后,您将能够通过 MainWindow
class.
void MainWindow::createToolbars()
{
FileBar = this->addToolBar(tr("File"));
FileBar->addAction(anyaction);
}
当您看到这样的消息时:
must point to class/struct/union/generic type
首先尝试包含 headers 以获取必要的 class。