目录
前言
刚刚学习了如何使用ui界面文件创建对话框,用到了一些常用的操作,包括信号与槽等,这样的东西都是套路化的,只有记录一遍,以后只要按操作执行就不会出现问题了应该,所以特此记录下先!
ui界面操作
- 创建一个Label
- 创建一个LineEdit
- 创建两个Push Button
直接拖动Widget Box中的控件即可,但是这时候是没有布局的。我给Label设置的文本信息为&Cell Location,给两个PushButton设置的objectName分别为okButton和closeButton。 - 设置
Buddies
需要给label和lineEdit设置绑定(至少我是这么理解的,词汇可能不专业),在菜单栏选择编辑,选择Edit Buddies。然后在label和lineEdit之间连线即表示Buddies。
设置Buddies,如下图:
注意,这时候是处于Edit Buddies状态,如果需要回到原来的状态,需要在菜单栏的编辑中选择Edit Widgets。 - 设置
Horizontal Spacer
如果默认对label和lineEdit使用水平布局,对两个PushButton使用水平布局,然后对整体使用垂直布局,如下图:
所以,为了保证美观,我们可以使用Horizontal Spacer,使用效果如下:
- 给
okButton和closeButton添加信号与槽
在菜单栏选择编辑,选择Edit Signals/Slots。然后对两个Push Button分别设置信号与槽。
注意:要回到编辑状态,要使用在菜单栏的编辑中选择Edit Widgets。 - 设置
lineEdit在有输入的时候,OK按钮才会有效,在右侧的属性中设置enabled的勾选去除。同时我们可以在代码中设置正则表达式来限制输入,同时在输入的时候设置槽函数来启动OK按钮。
这里使用on_lineEdit_textChanged函数作为lineEdit输入的槽函数。
槽函数代码如下:
void Dialog::on_lineEdit_textChanged()
{
ui->okButton->setEnabled(ui->lineEdit->hasAcceptableInput());
}
- 为
lineEdit设置信号与槽
在菜单栏选择编辑,选择Edit Signals/Slots,在弹出界面lineEdit中选择textChanged,然后在Dialog选择编辑,然后添加我们自己写的槽函数on_lineEdit_textChanged。
对话框代码
- dialog.h
#ifndef DIALOG_H
#define DIALOG_H
#include <QDialog>
namespace Ui {
class Dialog;
}
class Dialog : public QDialog
{
Q_OBJECT
public:
explicit Dialog(QWidget *parent = 0);
~Dialog();
private slots:
void on_lineEdit_textChanged();
private:
Ui::Dialog *ui;
};
#endif // DIALOG_H
- dialog.cpp
#include "dialog.h"
#include "ui_dialog.h"
Dialog::Dialog(QWidget *parent) :
QDialog(parent),
ui(new Ui::Dialog)
{
ui->setupUi(this);
QRegExp regExp("[A-Za-z][1-9][0-9]{0,2}");
// this represent parent object; if parent object delete, all the child object will be delete
ui->lineEdit->setValidator(new QRegExpValidator(regExp, this));
}
Dialog::~Dialog()
{
delete ui;
}
void Dialog::on_lineEdit_textChanged()
{
ui->okButton->setEnabled(ui->lineEdit->hasAcceptableInput());
}
创建效果
总结
学习!分享!感谢!
2801



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



