qt入门学习日记:窗口部件上

基础窗口部件QWidget

#include<QApplication>//QT每一个类都有一个与之同名的头文件,这一点有点像java
#include<QDialog>
#include<QLabel>
#include"ui_helloworld.h"//导入ui文件的头文件

int main(int argc,char *argv[]){
    QApplication a(argc,argv);
    QWidget * widget=new QWidget(nullptr,Qt::Dialog);//新建类对象,它是一个窗口
    //nullptr表示父窗口指针为无,既它是一个独立窗口,Qt::Dialog表示窗口类型
    widget->setWindowTitle("我是widegt");//设置窗口标题
    QLabel * label=new QLabel(nullptr,Qt::SplashScreen | Qt::WindowStaysOnTopHint);//它是一个窗口
    //Qt::WindowStaysOnTopHint表示让该窗口停留在所有窗口的上面
    label->setWindowTitle("我是label");
    label->setText("你好,我是label");
    label->resize(180,200);//设置窗口大小

    QLabel * label2=new QLabel(widget);//参数是widget,既指定widget为父窗口,是父窗口的一个子部件,不是一个窗口
    label2->setText("我不是独立窗口,是widget的子部件");
    label2->resize(250,20);

    widget->show();
    label->show();

    int e=a.exec();
    delete widget;//销毁父对象的时候自动销毁子对象,所以label2也在这里被销毁了
    delete label;
    return e;//让a进入事件循环,而不是退出程序
}

对话框QDialog

模态对话框

点不了其他的功能和界面。这种对话框就称为模态对话框。还有一些能够操作其他的窗口属于非模态对话框。

Qt中的QWidget对象自带setWindowModality(type)方法,用以设置窗口模态类型。参数type可选为一下三种:

  1. Qt:NonModal非模态:正常模式
  2. Qt:WindowModal半模态:窗口级模态对话框,阻塞父窗口、父窗口的父窗口及兄弟窗口。
  3. Qt…ApplicationModal模态:应用程序级模态对话框,阻塞整个应用程序的所有窗几。

一个例子:
在这里插入图片描述
helloworld代码:

#include "helloworld.h"
#include "ui_helloworld.h"
#include<QDialog>

helloworld::helloworld(QWidget *parent)
    : QDialog(parent)
    , ui(new Ui::helloworld)
{
    ui->setupUi(this);
    QDialog dialog(this);
    dialog.exec();//让dialog成为模态对话框,带有阻塞功能,没办法对其他窗口进行操作
    //当关闭对话框后,代码才会接着往下执行,应用程序输出窗口才开始输出调试信息。

}

helloworld::~helloworld()
{
    delete ui;
}

main文件代码:

#include<QApplication>//QT每一个类都有一个与之同名的头文件,这一点有点像java
#include<QDialog>
#include<QLabel>
#include"ui_helloworld.h"//导入ui文件的头文件
#include"helloworld.h"


int main(int argc,char *argv[]){
    QApplication a(argc,argv);
    QWidget * w=new QWidget();
    helloworld* he=new helloworld(w);
    w->show();
    int e=a.exec();
    return e;//让a进入事件循环,而不是退出程序
}

非模态对话框可以对其他窗口进行操作。

  • 7
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值