在Qt中有如同其他的IDE一样的“即画即得”的界面设计方式,对其设计的原理,我的简单的理解如下:
1.编译器为程序员所设计的ui文件创建一个类,
class Ui_MainWindow
{
private:
程序中用到的自定义的相关的组件, 也就是你所添加的组件等
QLabel *label;
...
public:
Ui_MainWindow():
label(new label),
...
{
...
}
//具体的Ui设计函数
setupUi(QMainWindow *mainWindow)
{
// 设置自定义组件(控件)的属性
label->text()=tr("light");
...
}
};
2.建立一个命名空间,其中声明一个类,该类从上述Ui_MainWindow
类派生而来。
namespace Ui{
class MainWindow:public Ui_MainWindow{};
}
以上两段代码定义在同一个头文件ui_mainwindow.h中
3.在程序中定义另一个类,这个类派生于QMainWindow,并且拥有一个
上面
头文
件ui_mainwindow.h中 Ui::MainWindow类的指针(私有成员变量),在这个类的构
造函数中利用Ui::MainWindow类 的setupUi()成员函数对该类进行初始化。
//声明ui_mainwindow.h中的命名空间Ui
namespace Ui{
class MainWindow;
}
class MainWindow:public QMainWindow //@1
{
private:
Ui::MainWindow *ui;
pulbic:
MainWindow(QMainWndow *mainWindow):
QMainWindow(mainWindow),
ui(new Ui::MainWindow)
{
ui->setupUi(this);
//其他的初始化的操作
}
//一些其他的成员
...
};
4.这样的设计之后就可以直接通过建立@1处的MainWindow的对象,而得到
“即画即得”的设计界面并可在该类中添加一些其他的功能了,比如改变组件
的属性和行为等等。
int main(int argc,char *argv[])
{
QApplication app(argc,argv);
MainWindow *mainwindow=new MainWindow();
mainwindow->show();
}
刚接触QT不久,以上是我的一些粗浅的理解,肯定有错误的地方,请各路大神指正!
class Ui_MainWindow
{
private:
程序中用到的自定义的相关的组件, 也就是你所添加的组件等
QLabel *label;
...
Ui_MainWindow():
label(new label),
...
{
...
}
//具体的Ui设计函数
setupUi(QMainWindow *mainWindow)
{
// 设置自定义组件(控件)的属性
label->text()=tr("light");
...
}
};
类派生而来。
class MainWindow:public Ui_MainWindow{};
}
以上两段代码定义在同一个头文件ui_mainwindow.h中
件ui_mainwindow.h中 Ui::MainWindow类的指针(私有成员变量),在这个类的构
造函数中利用Ui::MainWindow类 的setupUi()成员函数对该类进行初始化。
namespace Ui{
class MainWindow;
}
{
private:
Ui::MainWindow *ui;
MainWindow(QMainWndow *mainWindow):
QMainWindow(mainWindow),
ui(new Ui::MainWindow)
{
ui->setupUi(this);
//其他的初始化的操作
}
...
};
“即画即得”的设计界面并可在该类中添加一些其他的功能了,比如改变组件
的属性和行为等等。
{
QApplication app(argc,argv);
MainWindow *mainwindow=new MainWindow();
mainwindow->show();
}
刚接触QT不久,以上是我的一些粗浅的理解,肯定有错误的地方,请各路大神指正!