QT基础 对话框和窗口部件

对话框中的按钮可以设置setDefault属性让其成为对话框的默认按钮,默认按钮就是按下enter键时所按下的按钮

布局管理器类不是窗口部件,当将子布局添加到父布局或者对窗口部件设置setLayout都会使布局自动重新定义自己的父对象

QWidget::sizeHint函数可以返回一个窗口部件所理想的尺寸大小

Qt的元对象系统,提供了两项关键技术,信号-槽以及内省机制,内省功能对于实现信号与槽是必需的,并且允许应用程序的开发人员在运行时获得有关QObject子类的元信息,包括一个含有对象的类名以及它所支持的信号与槽的列表,其中,Q_OBJECT宏声明了在每一个QObject子类中必须实现的一些内省函数:metaObject(),tr(),qt_metacall(),以及一些其他函数。Qt将源码文件交给标准C++编译器之前,需要把扩展语言去除掉,Moc会分析c++源文件,如果它发现在一个头文件中包含了宏Q_OBJECT,则会生产另外一个c++源文件,这个源文件会包含宏Q_OBJECT的实现代码,新文件会在源文件前加上moc_构成文件名,这个文件同样进入编译系统,链接到二进制代码中。

使用Qt设计师所创建的窗体最终仍旧是c++代码,可把QT设计师看做是一个传统的工具集

平时使用QT设计师设计的界面会生成.ui文件,里面会有一个setUi函数,其实就是我们用纯代码编写界面的代码,还会有一个
retransalteUi函数,用于对窗口里的字符串进行编码转换的功能。还有一行QMetaObject类的connectSlotsByName()静态函数,
它可以使得窗口部件可以实现按对象名进行信号与槽的关联,比如on_button_clicked()这类,还会有一个Ui命名空间,用于创建
窗口实例

可对QLineEdit设置正则表达式来限制输入如:

QRegExp regExp("[A-Za-z][1-9][0-9]{0,2}"};  //一个正则表达式类
lineEdit->setValidator(new QRegExpValidator(regExp,this));

这样它就只能输入一个A-Z的字母和一个1-9的数字加0个或1个或2个的0-9的数字.还可以通过QLineEdit::hasAcceptableInput来判断设置了检验器的行编辑器的内容的有效性。还有两个检验器分别为QIntValidator,QDoubleValidator.

通过设置

layout()->setSizeConstraint(QLayout::SetFixedSize);

可以使用户无法再重新修改这个对话框窗体的大小

在创建窗口部件时,它的构造函数的第二个参数一般用来设置它们的一些特殊属性,比如

QWidget* widget=new QWidget(0,Qt::Dialog|Qt::FramelessWindowHint);

这样会设置一个没有边框的窗口,因为Qt::FramelessWindowHint属性

QLabel* label=new QLabel(0,Qt::SplashScreen|Qt::WindowStaysOnTopHint);

这样label会一直停留在所有其他窗口上面,因为WindowStaysOnTopHint属性。QWidget还有一个setWindowState()函数用来设置窗口的状态,由Qt::WindowState关键字指定。

布局函数分为两种,包含框架和不包含框架,包含框架就是把标题和不包含内容的边缘也算进去,从最左上角开始算位置,如

x(),y(),frameGeometry(),pos()等,不包含框架就是单单的显示区域的坐标开始算,如:geometry(),width(),height(),rect()

要使一个窗口变为模态对话框,只需要调用它的exec()函数,非模态就show()函数。调用完show()后,会把控制权交还给父窗口,而调用exec()就不同,只有窗口返回后才会交还控制权,类似的还有一个setWindowModality()函数用来设置要阻塞的窗口类型,可以是NoModal不阻塞任何WindowModal阻塞它的父窗口,所有祖先窗口以及子窗口或ApplicationModal阻塞整个应用程序的所有窗口

close()槽只有当只剩下最后一个主界面就是没有父窗口的界面,调用它程序才会退出,其他时候都是隐藏

QColorDialog::getColor用来获取颜色,QFileDialog::getOpenFileName用来获取打开的文件名,要选择多个文件
就用getOpenFileNames把结果存储在QStringList类型中,还可以用getSaveFileName()函数来实现保存文件对话框和另存为对话框可以用getExistingDirectory()函数来获取一个已存在的文件夹路径,它们用法都类似

QFontDialog::getFont用来选择字体,2个参数bool类型变量用来存放按下的按钮状态按下了OK就为true,和父窗口对象。

QInputDialog类型用来提供一个对话框,可以让用户输入一个单一的数值或字符串
QInputDialog::getInt可以提供一个输入整型数值的对话框,参数作用分别为指定父窗口,设置窗口标题,设置对话框中的标签
显示文本,设置默认字符串,输入最小值,输入最大值,箭头数值每次变化量,设置获取按下按钮信息的bool变量
QInputDialog::getDouble获取浮点数值,其他都差不多,就是倒数第二个参数表示小数的位数

QInputDialog::getItem提供一个可以输入一个条目的对话框,前三3个参数差不多,然后是条目,是否能被修改true是能。

QMessageBox提供一个模态的对话框来通知用户一些信息或者向用户提出问题并且获取答案
主要有QMessageBox::question,information,warning,Abort,critical等,参数都是父窗口,标题栏,显示信息和拥有的按钮,

主要想创建自己的图标和按钮,可以创建QMessageBox再用相关函数操作

QFrame是带有边框的部件的基类

QSpinBox有一个suffix属性,可以设置为%。prefix可以设置前缀比如¥符号。decimals属性用来设置小数点后面的位数
QAbstractSlider类用于提供区间内的一个整数值,它有一个滑块,可以定位到一个整数区间的任意值
对于Scroll Bar属性的pageStep是页步长,就是按下page up和page down后前进的数量,tracking设置是否跟踪,默认是,就是在拖动滑块时,每一栋一个刻度都会发射valueChanged信号,如果否则只有拖动滑块释放时才发射。invertedApperance属性设置滑块所在位置,比如默认滑块开始在最左端,选中这个属性后就会在最右端.invertedControls设置反向控制,比如默认向上方向键是增大,设置后就会变小。slider有2个自己的属性tickPosition和tickInterval,前者设置显示刻度的位置,默认是不显示的,后者是设置刻度的间隔。Dial有自己的属性wrapping,用来设置是否首尾相连,默认开始和结束时分开的。属性notchTarget用来设置刻度之间的间隔,bitcgesVisible用来设置是否显示刻度。

猜你喜欢

转载自blog.csdn.net/weixin_38893389/article/details/80807116