使用的.ui文件Qt的文檔中解釋說: http://doc.qt.io/archives/qt-4.7/designer-using-a-ui-file.html
摘要: 來處理的.ui文件最簡單的方法是通過uic(用戶界面編譯器)在編譯時運行它。如果.ui文件包含在項目(.pro)文件中,這將自動完成。 (在你的情況下,「Add New」可能已經自動完成了。)然後你只需要將生成的C++頭文件包含在你的源文件中。它的名字應該像「ui_nameoftheoriginaluifile.hpp」。當然,之後你需要實例化.hpp文件中定義的表單。
編輯補充:
有你的代碼的幾個問題,從它的可讀性開始。我不知道你以前是否使用了面向對象的語言,但是C++中的一個非常基本的規則是使用大寫字母開始類名,以使它們更容易與對象和其他變量區分開來。所以類名應該是「About」,「Parent」等。
編譯錯誤是由於使用「about」而不是在「ui_about.hpp」文件中實際使用的類的名稱導致的 - 「MainWindow 」。 (這取決於您在.ui文件中使用的表單的名稱)。
如果您使用的是Qt Creator:按住Ctrl鍵並單擊文件「ui_about.h」的名稱包含指令。這將打開它進行檢查。試着弄清楚它是如何工作的。
您還沒有將opDialog()函數定義爲「parent.cpp」中「parent」類的成員,這會導致另一個編譯時錯誤。
您也不應該使用QMainWindow作爲關於對話框。 QMainWindow應該是你的應用程序的主窗口 - 應該不會有更多的實例。
所以,about.h:
namespace Ui {
class MainWindow;
}
class about : public QMainWindow {
Q_OBJECT
public:
about(QWidget *parent = 0);
~about();
protected:
void changeEvent(QEvent *e);
private:
Ui::MainWindow *ui;
};
而且about.cpp的開頭:
#include "about.h"
#include "ui_about.h"
about::about(QWidget *parent) :
QMainWindow(parent),
ui(new Ui::MainWindow)
{
ui->setupUi(this);
}
那麼,發生了什麼? – Daggerstab 2011-12-28 09:03:54