环境:
QT Creator 4.10.0(community)
1.GUI应用程序设计基础
1)项目文件
包含头文件.h文件,这里边保管类的声明,以及成员方法的声明。
包含.pro文件,它是一些设置文件。
包含.ui文件,它是一个XML格式存储的窗体的元件及其布局文件。
包含.cpp文件,里边基本上放的都是类的定义。
2)代码分析
主函数 main()
主函数内容很少,里边只包含了一个窗口类,以及调用了一下显示,调用了能让程序持续运行的函数。
int main(int argc, char *argv[])
{
QApplication a(argc, argv);
QWDialog w;
w.show();
return a.exec();//应用程序运行
}
类声明里边的命名空间:
QT_BEGIN_NAMESPACE
namespace Ui { class QWDialog; }
QT_END_NAMESPACE
一个派生类,指向QWdialog类型的指针负责连接程序的界面。这个类包含了两个成员函数,第一个是下划线,第二个是调颜色。
class QWDialog : public QDialog
{
Q_OBJECT
public:
QWDialog(QWidget *parent = nullptr);
~QWDialog();
private slots:
void on_radioButton_clicked(bool checked);
void setTextFontColor();
private:
Ui::QWDialog *ui;
};
接下来是类的构造函数
connect就是QT的灵魂所在了,它负责联系信号的槽的关系,槽就是一个函数,它就是正常的C++函数,不过是为了响应信 号,所以叫做槽函数,connect有四个形参,从左至右分别是,发送信号的对象、信号、响应信号的对象、信号。,每次做好一个信号之后,一定要有之对应的槽函数响应信号。
QWDialog::QWDialog(QWidget *parent)
: QDialog(parent)
, ui(new Ui::QWDialog)
{
ui->setupUi(this);
connect(ui->radioButton,SIGNAL(clicked()),this,SLOT(setTextFontColor()));
connect(ui->radioButton_2,SIGNAL(clicked()),this,SLOT(setTextFontColor()));
}
通过拖拽组件,我做好了我的第一个QT程序。
它包含了3个标签,两个按钮,两个文本框,两个对勾框。对勾框可以调整颜色和下划线(蓝色的字体。),以下是两个成员函数
void QWDialog::on_radioButton_clicked(bool checked)
{
QFont font = ui->label->font();
font.setUnderline(checked);
ui->label->setFont(font);//设置下划线
}
void QWDialog::setTextFontColor()
{
QPalette plet=ui->textEdit->palette();
if(ui->radioButton->isChecked())
plet.setColor(QPalette::Text,Qt::blue);
else if(ui->radioButton_2->isChecked())
plet.setColor(QPalette::Text,Qt::red);
else
plet.setColor(QPalette::Text,Qt::black);
ui->textEdit->setPalette(plet);//设置文本框内的颜色
}