无序基础(一)

作为新接触QT的人,在学习的过程中做下的一些记录,留以日后。

基类

以QWidget,QDialog,QMainwindow。QWidget作为QDialog,QMainwindow的父类,其面向所有用户界面的对象;QDialog取其dialog会话之意,作为对话窗基类;QMainwindow以其mainwindow主窗口之名提供若下图所示的一个有菜单条、锚接窗口(例如工具条)和一个状态条的主应用程序窗口

QT 无序基础(一)

布局

布局分QGridLayout,QHBoxLayout,QVBoxLayout

QGridLayout为栅格布局,主要用法,例:
声明

#include <QGridLayout>

将一个文本框置入某一位置

QLabel *label=new QLabel(tr(“栅格测试”));
QGridLayout *mainlayout=new QGridLayout();
mainlayout->addWidget(label,0,0,1,1);

有一点值得注意,采用gridlayout,在addWidge括号中实体为(所要置入的控件,位置行,位置列,所占行,所占列)以及隐去的本在所占列之后的Qt::Alignment = 0对齐方式。

QHBoxLayout为水平布局,顾名思义,例:
声明

#include <QHBoxLayout>

将label置于同一水平位置

QLabel *label1=new QLabel(tr(“水平测试”));
QLabel *label2=new QLabel(tr(“水平测试”));
QLabel *label3=new QLabel(tr(“水平测试”));

QHBoxLayout *mainlayout=new QHBoxLayout();
mainlayout->addWidget(label1);
mainlayout->addWidget(label2);
mainlayout->addWidget(label3);

所得即为三个label处于同一行的布局之中

QVBoxLayout为垂直布局,例:
声明

#include <QVBoxLayout>

将label置于同一垂直位置

QLabel *label1=new QLabel(tr(“垂直测试”));
QLabel *label2=new QLabel(tr(“垂直测试”));
QLabel *label3=new QLabel(tr(“垂直测试”));

QVBoxLayout *mainlayout=new QVBoxLayout();
mainlayout->addWidget(label1);
mainlayout->addWidget(label2);
mainlayout->addWidget(label3);

所得即为三个label处于同一列的布局之中

作为布局者,将上三种合理配合可以派出整洁的布局,例:
声明

#include <QVBoxLayout>
#include <QHBoxLayout>
#include <QGridLayout>

设置一张图片的绝对地址

#define P “E:/QTwork/Qwork/login.png”

头文件定义

private:
QLabel *picture,*label1,*label2;
QLineEdit *id,*psw;
QPushButton *loginbtn,*regbtn;
QVBoxLayout *mainlayout,*right;
QHBoxLayout *bottom;
QGridLayout *left;

cpp文件定义

picture=new QLabel();
QPixmap icon;
icon.load§;
picture->setPixmap(icon);
label1=new QLabel();
label1->setText(tr(“用户名:”));
label2=new QLabel();
label2->setText(tr(“密 码:”));
id=new QLineEdit();
psw=new QLineEdit();
psw->setEchoMode(QLineEdit::Password); //设置密码框输入时显示为圆点
loginbtn=new QPushButton();
loginbtn->setText(tr(“登 陆”));
regbtn=new QPushButton();
regbtn->setText(tr(“注 册”));

left=new QGridLayout(); //设置左下控件位置
left->addWidget(label1,1,0,1,1);
left->addWidget(id,1,1,1,3);
left->addWidget(label2,2,0,1,1);
left->addWidget(psw,2,1,1,3);

right=new QVBoxLayout(); //设置右下控件位置
right->addWidget(loginbtn);
right->addWidget(regbtn);

bottom=new QHBoxLayout(); //设置底部控件位置
bottom->addLayout(left);
bottom->addLayout(right);

mainlayout=new QVBoxLayout(this); //设置总体控件位置
mainlayout->addWidget(picture);
mainlayout->addLayout(bottom);

得到的显示结果:
QT 无序基础(一)

正则

正则表达式附录:
QT 无序基础(一)QT 无序基础(一)
正则用及QRegExp。

以setPattern为例:
声明

#include <QRegExp>

以注册信息为例,定下id格式为任意两位字母加3位以内的数字,psw格式为6位以内数字的需求则可通过正则表达来实现

QRegExp norid,norpsw;
norid.setPattern("[a-zA-Z][a-zA-Z]\d{0,3}");
norpsw.setPattern("\d{0,6}");

时间原因,上述三个部分都还有很多内容,布局控件间距,控件与窗口边距,正则的其他用法等等今天着实不能再写下去了,之后的空余时间中我会继续补上。

相关文章:

  • 2021-12-21
  • 2021-08-12
  • 2021-12-02
  • 2021-08-06
  • 2021-04-06
  • 2021-08-21
  • 2021-09-30
  • 2021-10-19
猜你喜欢
  • 2021-09-25
  • 2021-06-29
  • 2022-12-23
  • 2022-12-23
  • 2022-12-23
  • 2021-07-20
  • 2021-10-10
相关资源
相似解决方案