Q5开发以及实例第一章学习笔记

it2023-10-11  64

1、QMainWindow、QDialog、QWidget的区别 QWidget:是所有窗口的基类 QMainWindow:窗口可以包含菜单栏、工具栏、状态栏、标题栏等,是最常见的窗口形式,可以作为GUI程序的主窗口。如下图所示: QDialog 是对话框窗口的基类。对话框主要用来执行短期任务,或与用户进行互动,它可以是模态的也可以是非模态的。QDialog 没有菜单栏、工具栏、状态栏等,如下所示: 窗口和控件都继承自 QWidget,如果不为控件指定父对象,它就会被作为窗口处理,这时 setWindowTitle() 和 setWindowIcon() 函数就会生效。请看下面的代码:

#include <QApplication> #include <QLabel> #include <QPushButton> int main(int argc, char *argv[]) { QApplication app(argc, argv); QLabel label("这是Label控件"); //没有父对象 label.setWindowTitle("Label控件作为顶级窗口"); label.setGeometry(100, 50, 360, 160); label.setAlignment(Qt::AlignCenter); label.show(); QPushButton btn; //没有父对象 btn.setWindowTitle("PushButton控件作为顶级窗口"); //设置窗口的标题 btn.setText("这是个大大的按钮"); //设置控件显示的名称 btn.setGeometry(480, 50, 360, 160); btn.show(); return app.exec(); }

2、工程文件.pro文件解析

/* 添加QT模块 */ QT += core gui greaterThan(QT_MAJOR_VERSION, 4): QT += widgets /* 工程文件名 */ TARGET = untitled1 /* 模板变量告诉qmake为这个应用程序生成哪种makefile。下面是可供使用的选择: app - 建立一个应用程序的makefile。这是默认值,所以如果模板没有被指定,这个将被使用。 lib - 建立一个库的makefile。 vcapp - 建立一个应用程序的Visual Studio项目文件。 vclib - 建立一个库的Visual Studio项目文件。 subdirs - 这是一个特殊的模板,它可以创建一个能够进入特定目录并且为一个项目文件生成makefile并且为它调用make的makefile。 */ TEMPLATE = app /* 添加的C++文件 */ SOURCES += \ main.cpp \ dialog.cpp /* 添加其头文件 */ HEADERS += \ dialog.h /* 添加UI文件 */ FORMS += \ dialog.ui RC_ICONS = myico.ico

3、main.cpp

int main(int argc, char *argv[]) { /* a是这个程序的QApplication对象。在任何Qt的窗口系统部件被使用之前创建QApplication对象是必须的。 他在这里定义并创建应用程序,QApplication类代表应用程序,在每个程序中只能有一个它的实例。在有图 形界面的程序中必须有一个QApplication类的实例,并且必须在所有窗口类的实例生成之前生成。 它最主要的功能是实现主事件循环。在主事件循环内,窗口才可以相应消息,并对事件做出处理。 */ QApplication a(argc, argv); /* 定义并创建窗口,并显示窗口 */ Dialog w; w.show(); /* 程序进入消息循环,等待可能的输入进行响应 */ return a.exec(); }

4、编写一个小例子,通过输入圆的半径,显示出圆的面积 槽选择这个点击信号,然后会自动跳转到该函数

void Dialog::on_But_Compute_clicked() { bool ok=0; QString tempStr; //定义字符串类 tempStr =ui->lineEdit_Radial->text(); //读取半径文本框的数据 double Radial=tempStr.toDouble(&ok);//将字符串转换成数字 double Aear=Radial*Radial*3.14; //求出半径 tempStr.setNum(Aear);//将其赋值到tempStr中 ui->lineEdit_Aear->setText(tempStr);//显示出圆的面积 }

最新回复(0)