嵌入式QT界面学习二

一木 1,022 views 0

一、窗口、子部件以及窗口类型

默认基类QMainWindow、QWidget和QDialog三种。没有嵌入到其他部件中的部件称为窗口,一般的,窗口都有边框和标题栏。像主窗口、对话框、标签、还有以后要介绍到的按钮、文本输入框等都是窗口部件,他们可以嵌入在一个窗口中。

嵌入式QT界面学习二

嵌入式QT界面学习二

Widget.resize(400,300);//设置窗口的大小

Widget.move(200,100);//设置窗口所在屏幕中显示的具体位置在哪里。

二、对话框QDialog

模态和非模态对话框

模态对话框就是在我们没有关闭它之前,不能再与同一个应用程序的其他窗口进行交互。

下面是实现程序:

QDialog dialog(this);

dialog.exec();

非模态对话框,既可以与它交互,也可以与同一程序中的其他窗口交互。

下面是实现程序:

QDialog *dialog = new QDialog(this);

Dialog->show();

使用show()函数也可以建立模态对话框,只需在其前面使

用setModal()函数即可。例如:

QDialog *dialog = new QDialog(this);
Dialog->setModal(true);
Dialog->show();

三、信号和槽

信号和槽都是函数,比如按下窗口上的一个按钮后想要弹出一个对话框

  • 使用connect()关联,h文件写上槽的声明

public slots:

void login();

并且在这里面不能少:Q_OBJECT这句话,没有分号

在mywidget.cpp文件中将槽的实现:

void MainWindow::login()

{

Login  LoginWd;

LoginWd.exec();//显示窗口

}

在这个文件中还要Widget类的构造函数中使用connect()关联按钮单击信号和自定义的槽

connect(m_pLoginBt,SIGNAL(clicked(bool)),this,SLOT(login()));

connect()函数中的四个参数分别是:发送信号的对象、发送的信号、接收信号的对象和要执行的槽,而信号和槽要分别使用SIGNAL()和SLOT()宏括起来。

  • 在设计模式关联,

用画的方法实现

  • 自动关联

 

四、添加部件和布局

layout 使用 addWidget 添加组件,使用 addLayout 可以添加子布局

弹簧布局参考:https://blog.csdn.net/scythe666/article/details/47183333

今天完成程序

嵌入式QT界面学习二

Main函数:

#include<QApplication>
#include<QWidget>  //界面的头文件
#include<QDial>//也是界面,就是没有放大和缩小功能的框
#include<QHBoxLayout>//放盒子的头文件,水平布局
#include<QVBoxLayout>//垂直布局
#include<QLabel>//标签的头文件
#include<QPushButton>//按钮的头文件
#include<QLineEdit>//单行的文本编辑器
#include<QCheckBox>//加入方框,可以打对号的
#include<QColorDialog>//颜色

int main(int argc,char *argv[])
{
    QApplication a(argc,argv);
    QWidget *wgt = new QWidget();//新建一个主界面
    wgt->setWindowTitle(QObject::tr("QQ"));//设置主界面的标题
    wgt->setFixedSize(400,300);//主界面的大小
    //创建一个最大的盒子,垂直布局的
    QVBoxLayout *qhbox= new QVBoxLayout;
    //创建四个小盒子,水平布局的
    QHBoxLayout *qhbox1=new QHBoxLayout;
    QHBoxLayout *qhbox2=new QHBoxLayout;
    QHBoxLayout *qhbox3=new QHBoxLayout;
    QHBoxLayout *qhbox4=new QHBoxLayout;
    /*将最大的盒子放到图形界面里面*/
     wgt->setLayout(qhbox);
     /*将四个小盒子放到大盒子中,使用 addLayout可以添加子布局*/
     qhbox->addStretch(2);//这里使用弹簧布局,2:1:2
     qhbox->addLayout(qhbox1);
     qhbox->addLayout(qhbox2);
     qhbox->addStretch(1);
     qhbox->addLayout(qhbox3);
     qhbox->addLayout(qhbox4);
     qhbox->addStretch(2);
     //创建一个登陆标签
    QLabel *pLab1 = new QLabel(wgt);
    pLab1->setText("账号");
    //创建一个输入账号的单行文本
    QLineEdit *line1 = new QLineEdit(wgt);
     //创建一个密码标签
    QLabel *pLab2 = new QLabel(wgt);
    pLab2->setText("密码");
    //创建一个输入密码的单行文本
    QLineEdit *line2 = new QLineEdit(wgt);
    line2->setEchoMode(QLineEdit::Password);//输入密码时显示圆点
    //创建一个选择方框
    QCheckBox *cbox1 = new QCheckBox(wgt);
    cbox1->setText(QObject::tr("记住账号"));
    //再创建一个选择方框
    QCheckBox *cbox2 = new QCheckBox(wgt);
    cbox2->setText(QObject::tr("找回密码"));
     /*创建一个button*/
    QPushButton *pBtn = new QPushButton(wgt);
    pBtn->setText("安全登陆");
    //将标签放入小盒子中
    qhbox1->addStretch(1);//下面使用弹簧布局1:1
    qhbox1->addWidget(pLab1);
    qhbox1->addWidget(line1);
    qhbox1->addStretch(1);
    qhbox2->addStretch(1);
    qhbox2->addWidget(pLab2);
    qhbox2->addWidget(line2);
    qhbox2->addStretch(1);
    qhbox3->addStretch(1);
    qhbox3->addWidget(cbox1);
    qhbox3->addWidget(cbox2);
    qhbox3->addStretch(1);
    qhbox4->addStretch(1);
    qhbox4->addWidget(pBtn);
    qhbox4->addStretch(1);
    wgt->show();//显示出来
    return a.exec();

}

Pro文件中:

QT += widgets

SOURCES += \
    main.cpp

RC_FILE += myico.rc//插入图标代码

 

 

 

发表评论 取消回复
表情 图片 链接 代码

分享