日常修炼10: QT 框架学习

QT:一个由C++编写的跨平台的图形化用户界面应用程序框架。

 

Widget::Widget(QWidget *parent) :
    QWidget(parent),
    ui(new Ui::Widget)
{
    ui->setupUi(this);
    this->setWindowTitle("Hello World");
}

hello world 

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

Qapplication a(argc, argv);

Widgt w;

w.show();

a.exec();

return 0;

信号和槽
信号由signals关键字声明
信号就是函数的声明,只需声明,不用实现
信号无返回值,但可以有参数,信号和槽的参数列表顺序要一致
信号可以重载
使用 emit 发射信号
一个信号可以连接多个槽函数(槽函数执行顺序时随机的)
一个槽函数可以被多个信号连接
槽函数可以时lambda表达式
信号可以连接信号
可以使用disconnect断开信号和槽的连接
QObject* QObject::sender() 可获得信号发送者,需强制类型转换
 

内存回收机制

  1. 需指定父对象
  2. 需直接或间接继承QObject
  3. 子对象使用new后可以不用delete,Qt会自

Qt 窗口系统

菜单、工具、状态栏

QmenuBAR menu_bar = menuBar();

Qmenu *file = menu_bar->addmenu("文件);

Qaction *action_new = file->addaction("新建");

connect(action_new, &QACTION::TRIGEERED, [](){QDEBUG() << "新建 被触发"});

file->addseparator();

 

// 模拟对话框 

QDialog dlg;

dlg.exec() ; 阻塞线程 直到结束

 

常用控件:

 

Qt 事件系统

事件是对各种应用程序需要知道的由应用程序内部或者外部产生的事情或者动作的统称。

Qt使用一个对象代表一个事件,所有事件类都继承于 QEvent。
在Qt中任何QObject的子类实例都可以接收和处理事件
QApplication对象通过调用 exec() 开始Qt事件循环来监听应用程序的事件,当有事件发生时,Qt 会产生一个与之对应的事件对象(QEvent子类实例)。Qt 会将这个事件对象传递给QObject的 event(),该函数按照事件对象的类型将对象给相应的处理函数 /(注:这些处理函数都是虚函数,需要继承实现)

重写部件事件处理函数

例如: keyPressEvent()、mousePressEvent()等, 该方法只用于处理特定部件的的特定事件

 

重写event()

QObject::event() 可以在事件到达默认处理函数之前获得该事件,用于事件的分发

 

2.1 GUI层
这里我们由于基于Qt的,所以这一层都是用Qt的类库来实现了,所有的主界面都会从这三个类:QWiget,QMainWindow,QDialog中的一个继承而来,并在main函数里生成实例并show出来,进入主消息循环。我本人习惯于使用QWiget,不使用UI文件,所有的界面都new出来,再使用代码来布局。
 

 

 

 

 

 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

梦幽风

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值