我學習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到你的源文件 –