天天看點

Qt學習記錄一——QMessageBox不能顯式執行個體化

2021.04.26

Qt學習記錄一——QMessageBox不能顯式執行個體化

1.QMessageBox的構造函數

QMessageBox(QWidget *parent = Q_NULLPTR)
QMessageBox(Icon icon, const QString &title,
 				const QString &text, 
 				StandardButtons buttons = NoButton, 
 				QWidget *parent = Q_NULLPTR, 
 				Qt::WindowFlags f = Qt::Dialog | Qt::MSWindowsFixedSizeDialogHint)
QMessageBox(const QString &title, const QString &text, Icon icon,
                  int button0, int button1, int button2,
                  QWidget *parent = Q_NULLPTR,
                  Qt::WindowFlags f = Qt::Dialog | Qt::MSWindowsFixedSizeDialogHint);
           

其中第三個官方文檔中有介紹:the following functions are obsolete。說明這個函數已經不适用了,盡量使用第二個構造函數。

2.對象執行個體化

QMessageBox mess = QMessageBox();
QMessageBox mess=QMessageBox(QMessageBox::Icon::Warning,"Error","open pcd file failure");
           

以上兩種執行個體化的方式都不行,但是普通類是可以顯式執行個體化的,此處的問題在vs中錯誤如下:

Qt學習記錄一——QMessageBox不能顯式執行個體化

放大可以看到内容。

3.解決問題

在qmessagebox.h頭檔案中,有

Q_DISABLE_COPY(QMessageBox)

的定義,這裡聲明QMessageBox的構造函數時私有的,不能通過指派運算符進行操作。

詳情可參見 部落格

是以,Qt中QMessageBox的執行個體化可通過隐式的方式或者是使用new關鍵字。

QMessageBox mess ();
		QMessageBox mess(QMessageBox::Icon::Warning,"Error","open pcd file failure");
           

本人才疏學淺,文中有錯誤的地方,請批評指正。

繼續閱讀