我学习Qt和在书中“的Qt开发的基础”尝试一些例子。 在书中,有一示例创建一个简单的应用程序象一个记事本教单文档界面的截面。 但是我有工具栏创建问题。Qt的C++创建工具栏
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
什么是我的错吗?
什么是编译错误消息? –
@MikhailZimka错误:C2027:使用未定义的类型'QToolBar';错误:C2227:' - > addAction'的左侧必须指向class/struct/union /泛型类型。应该是由于'addToolBar(const QString&)'不返回'QToolBar *' – tom
这很奇怪,但你可以尝试明确#include到你的源文件 –