windows平台下qt窗口的show是如何调用的(同步)

实例程序

#include "QtWidgetsApplication1.h"
#include <QtWidgets/QApplication>
#include <QLabel>
#include <QDialog>
#include <QDebug>
#include <QThread>
#include <windows.h>
#include <TlHelp32.h>

int main(int argc, char *argv[])
{
    QApplication a(argc, argv);
    QtWidgetsApplication1 w;
    QLabel l(nullptr);
    l.setText("hello world");
    l.show();
    w.show();
    QThread q;
    qDebug("sdasd");
    return a.exec();
}

定位过程

  1. l.show();处打上断点进行调试
    在这里插入图片描述
    可以发现这里实际上调用了QWidget的setVisible方法
  2. setVisible方法会调用到private方法的show_helper()
    在这里插入图片描述
  3. 然后qt会先发送一个同步的qevent消息,然后调用show_sys() 在这里插入图片描述
  4. 每个QWidget会维护一个QWindow的实际窗口抽象类,这里会调到其setVisible()函数中
    在这里插入图片描述
  5. 最后调用windows平台的现实类的show_sys方法
  6. over!在这里插入图片描述
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
你可以使用Qt框架来创建一个简单的视频播放器,并在播放过程中显示进度条。首先,你需要安装Qt并配置好开发环境。 以下是一个简单的示例代码,演示了如何在Qt中使用MPlayer播放视频并显示进度条: ```cpp #include <QApplication> #include <QMediaPlayer> #include <QVideoWidget> #include <QSlider> #include <QBoxLayout> int main(int argc, char *argv[]) { QApplication app(argc, argv); // 创建主窗口 QWidget window; window.setWindowTitle("Video Player"); // 创建视频播放器和视频显示窗口 QMediaPlayer player; QVideoWidget videoWidget; player.setVideoOutput(&videoWidget); // 创建进度条 QSlider progressSlider(Qt::Horizontal); progressSlider.setRange(0, 0); // 设置范围为0,用于后续更新 // 连接视频播放器的信号和进度条的槽函数 QObject::connect(&player, &QMediaPlayer::durationChanged, &progressSlider, &QSlider::setMaximum); QObject::connect(&player, &QMediaPlayer::positionChanged, &progressSlider, &QSlider::setValue); // 创建垂直布局,并将视频显示窗口和进度条添加到布局中 QVBoxLayout layout; layout.addWidget(&videoWidget); layout.addWidget(&progressSlider); // 设置主窗口的布局 window.setLayout(&layout); // 打开视频文件 player.setMedia(QUrl::fromLocalFile("path/to/your/video.file")); // 显示主窗口并开始播放视频 window.show(); player.play(); return app.exec(); } ``` 请注意,上述代码中的`"path/to/your/video.file"`应替换为你要播放的视频文件的实际路径。 这只是一个简单的示例,你可以根据需要进行进一步的自定义和功能扩展。希望能对你有所帮助!
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

parkseyoung

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

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

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

打赏作者

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

抵扣说明:

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

余额充值