本文主要探讨对UI界面设计过程中遇到的问题和解决办法,同时也引出了很多的专业概念,供大家一起学习。
1、UI界面的绘制
1、新建QT Widget Application ,项目名称为“Test”,基类选择“QDialog”,类名保持“Dialog”不变,保持“创建界面”复选框的选中状态。
2、双击dialog.ui文件,打开QT的设计器,中间的空白窗口是一个parent Widget,接着需要建立一些Child Widget。在左边的工具箱中找到所需要的Widget:拖曳出一个Label,一个Line Edit 、一个Horizontal Spacer及两个Push Button。
3、设置widget的属性:具体名称就不一一叙述了,看个人喜好。
4、运行工程,如下图所示:

简要说明以下在布置布局的过程中的小技巧:
1、buddy关系;假如设定label的Text为&t,那么程序运行后,按住Alt+t就相当于单击lineEdit,可以通过热键快速定位到需要输入的文本框处,能够减少查找的事件,并能一定程度避免鼠标失灵的尴尬;具体操作:选择编辑,点击编辑伙伴命令即可;
2、Horizontal Spacer以及同类型的间隔控件;在设定UI界面的布局时,这些小的部件能够给绘制UI界面提供很多的便利,主要是看起来更美观一些;
3、QT的Layout Manage 能够对各个小部件的位置进行适合的调整,按住ctrl键,勾选多个widget,再点击合适的对齐的方式,我们就可以完成一个简单的布局操作;
4、同时,我们可以利用工具栏中的调整大小按钮、Tab键顺序按钮来对widget进行调整,以满足我们正常的需求;
2、UI初始化以及槽函数与信号的连接
1、在头文件中,我们首先定义如下几个变量:
private:
Ui::Dialog *ui;
private slots:
void on_lineEdit_textChanged(QString);//槽函数的声明
void on_okButton_clicked();
void on_cancelButton_clicked();
2、第二步就是在Dialog.cpp对构造函数进行实例化;
ui->setupUi(this);//在构造函数中使用该句进行初始化操作
QRegExp regExp("[A-Za-Z] [1-9] [0-9] {0,2}");//正则表达式限制输入字元的范围;
ui->lineEdit->setValidator(new QRegExpValidator(regExp,this));
connect(ui->okButton,SIGNAL(clicked()),this,SLOT(accept()));
connect(ui->cancelButton,SIGNAL(clicked()),this,SLOT(reject()));
在上述代码中,我们引入正则表达式的概念
正则表达式(Regular Expression,通常简写为RegExp、RE等),预先定义一些字符或字符的组合,用于匹配文本中的一段字符串。下面是它的一些用途——
1.验证
判断字符串是否符合某个标准,比如“是一个整数”或者“没有空格”。
2.搜索
正则表达式提供了比普通字符串匹配更为强大的匹配方式,比如匹配下面的词语:mail, letter, correspondence,但是不包括email, mailman, letterbox等等。
3.查找并替换
正则表达式能够用一个不同的字符串,替换所有出现另一个字符串的地方,比如用&替换&,如果原先&后面已经有了amp;那么不替换。
4.分割字符串
比如,根据tab来分割字符串。
下面就是对槽函数的说明:
void Dialog::on_lineEdit_textChanged(QString)
{
ui->okButton->setEnabled(ui->lineEdit->hasAcceptableInput());
}
运行结果如下:

遇到的问题:在编译的过程中,我遇到了两个问题。
第一个:Qt creater出现“启动程序失败,路径或者权限错误?
解决办法:查看项目中构建步骤是否规范,qmake、make,没有的构建步骤直接添加。
第二个:QT在编译的过程中会出现缺少 collect文件
解决办法:一般情况下是因为程序已经在后台运行了,无法重新构建,需要将工程暂停。
附录:
|
例子 |
解释 |
|
[abc] |
方括号中间是几个字母,表示a,b,c这三个单独的字符 |
|
[^abc] |
除了a,b,c以外的字符 |
|
[a-z] |
横杠表示范围,匹配a到z之间(包括a和z)的所有单个字符 |
|
[a-zA-Z] |
a到z、A到Z的所有单个字符 |
|
^ |
在一行最前 |
|
$ |
在一行的最后 |
|
\s |
匹配任意空白字符 |
|
\S |
匹配任意非空白的字符 |
|
\d |
任意数字 |
|
\D |
任意非数字 |
|
\w |
任意单字字符(字母、数字或下划线) |
|
\W |
任意非单字字符 |
|
(a|b) |
a或b |
|
a? |
?代表0个或1个 |
|
a* |
*代表0个或1个或多个 |
|
a+ |
+代表1个或多个 |
|
a{3} |
3个a |
|
a{3,} |
3个或大于3个a |
|
a{3,6} |
a的个数在3和6之间(包括3和6) |

本文详细介绍了使用QT5.3.2进行UI界面设计的步骤,包括新建项目、添加控件、设置布局,并分享了在设计过程中的小技巧。此外,还探讨了正则表达式的功能,如验证、搜索、替换和分割字符串,并在QT项目中展示了其应用。在实际操作中,作者遇到了编译问题,提供了相应的解决方案。
2万+

被折叠的 条评论
为什么被折叠?



