日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

Qt文档阅读笔记-继承QProgressDialog使得Dialog更加灵活

發布時間:2025/3/15 编程问答 27 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Qt文档阅读笔记-继承QProgressDialog使得Dialog更加灵活 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

目錄

?

?

理論

例子


?

理論

在讀一篇官方文檔的時候,發現可以子類化QProgressDialog,使得這個QProgressDialog更加的靈活,下面是官方對于QProgressDialog中最簡單的例子:

QProgressDialog progress("Copying files...", "Abort Copy", 0, numFiles, this);progress.setWindowModality(Qt::WindowModal);for (int i = 0; i < numFiles; i++) {progress.setValue(i);if (progress.wasCanceled())break;//... copy one file}progress.setValue(numFiles);

重新繼承QProgressDialog后可以使得Dialog用起來更加的靈活方便:

class MyProgressDialog : public QProgressDialog{Q_OBJECTpublic:MyProgressDialog(const QString &titleName, QWidget *parent = Q_NULLPTR);public slots:void replyProgress(qint64 bytesRead, qint64 totalBytes); };

函數的定義如下:

MyProgressDialog::MyProgressDialog(const QString &titleName, QWidget *parent): QProgressDialog(parent) {setWindowTitle(titleName); }void MyProgressDialog::replyProgress(qint64 bytesRead, qint64 totalBytes) {//qDebug() << "bytesRead : " << bytesRead << " totalBytes :" << totalBytes;setMaximum(totalBytes);setValue(bytesRead); }

發現這和繼承QWidget等有著異曲同工之妙!!!!

下面舉一個例子將說明這一點!

?

例子

程序結構如下圖所示:

程序運行截圖如下:

源碼如下:

testtask.h

#ifndef TESTTASK_H #define TESTTASK_H#include <QThread>class TestTask : public QThread {Q_OBJECT public:TestTask(QObject *parent = 0);~TestTask();int create(const int &total);void destroy();int getStatus();int getProgress();signals:void threadValue(int currentValue, int totalValue);private:void run();private:int m_totalByte;bool m_isRun;int m_currentByte;};#endif // TESTTASK_H

widet.h

#ifndef WIDGET_H #define WIDGET_H#include <QWidget> #include <QProgressDialog>class TestTask;class Widget : public QWidget {Q_OBJECTpublic:Widget(QWidget *parent = 0);~Widget();protected slots:void btnClicked();private:TestTask *m_testTask; };class MyProgressDialog : public QProgressDialog{Q_OBJECTpublic:MyProgressDialog(const QString &titleName, QWidget *parent = Q_NULLPTR);public slots:void replyProgress(qint64 bytesRead, qint64 totalBytes); };#endif // WIDGET_H

main.cpp

#include "widget.h" #include <QApplication>int main(int argc, char *argv[]) {QApplication a(argc, argv);Widget w;w.show();return a.exec(); }

testtask.cpp

#include "testtask.h" #include <QDebug> #include <QMessageBox>TestTask::TestTask(QObject *parent) : QThread(parent) {m_totalByte = 0;m_currentByte = 0;m_isRun = false; }TestTask::~TestTask() {}int TestTask::create(const int &total) {m_totalByte = total;m_isRun = true;start(); }void TestTask::destroy() {m_isRun = false; }int TestTask::getStatus() {return m_isRun; }int TestTask::getProgress() {return m_currentByte; }void TestTask::run() {while(m_isRun && (m_currentByte <= m_totalByte)){//qDebug() << "m_currentByte : " << m_currentByte << " m_totalByte : " << m_totalByte;m_currentByte++;QThread::sleep(1);threadValue(m_currentByte, m_totalByte);} }

widget.cpp

#include "widget.h" #include "testtask.h" #include <QPushButton> #include <QVBoxLayout> #include <QDebug> #include <QMessageBox>Widget::Widget(QWidget *parent): QWidget(parent) {QPushButton *button = new QPushButton("button");QVBoxLayout *layout = new QVBoxLayout;connect(button, &QPushButton::clicked, this, &Widget::btnClicked);layout->addWidget(button);setLayout(layout);m_testTask = new TestTask; }Widget::~Widget() {}void Widget::btnClicked() {//QMessageBox::information(this, "tip", "button clicked");MyProgressDialog *dialog = new MyProgressDialog("MyProgressDialog");connect(m_testTask, &TestTask::threadValue, dialog, &MyProgressDialog::replyProgress);m_testTask->create(20);dialog->exec();delete dialog; }MyProgressDialog::MyProgressDialog(const QString &titleName, QWidget *parent): QProgressDialog(parent) {setWindowTitle(titleName); }void MyProgressDialog::replyProgress(qint64 bytesRead, qint64 totalBytes) {//qDebug() << "bytesRead : " << bytesRead << " totalBytes :" << totalBytes;setMaximum(totalBytes);setValue(bytesRead); }

?

總結

以上是生活随笔為你收集整理的Qt文档阅读笔记-继承QProgressDialog使得Dialog更加灵活的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 妖精视频一区二区 | 99国产精品久久久久99打野战 | 欧美色性视频 | 亚洲国产成人在线观看 | 国产高清一级 | 美女一二三区 | 一区二区三区在线电影 | 三级免费网址 | 91精彩刺激对白 | 一级黄色片免费看 | av老司机在线播放 | 欧美有码在线观看 | 女主播在线观看 | 国产超碰人人爽人人做人人爱 | 我要看18毛片 | 欧美日韩一区二区在线观看视频 | 99热这里精品 | 漂亮少妇高潮午夜精品 | a黄视频 | 99视频在线精品 | 热九九精品 | 青青草视频成人 | 久久久123| 99久久国产视频 | 男人与雌性宠物交啪啪 | 高h教授1v1h喂奶 | 97视频免费在线 | 69国产精品 | 国产熟女一区二区三区五月婷 | 青青操在线 | 国产精品99re | 国产三级理论 | 亚洲精品日韩av | 国产一区二区三区免费观看视频 | 欧美整片第一页 | 亚洲13p| 国产色网站| 国产乱淫视频 | www.超碰97| 欧美韩日精品 | 成人观看 | 欧美亚洲一区 | 免费的一级黄色片 | jizz18国产| 亚洲无码一区二区三区 | 丁香婷婷久久久综合精品国产 | 色男人在线 | 人人亚洲 | 国产大片中文字幕在线观看 | 日韩一区二区a片免费观看 伊人网综合在线 | 中文字幕一区二区精品 | 秋霞网一区二区 | 日韩欧美亚洲精品 | 台湾无码一区二区 | 日本人与黑人做爰视频 | 少妇大叫太粗太大爽一区二区 | 免费黄色一级 | 天堂视频一区 | 天天干一干 | 夜晚福利 | 亚洲视频在线观看免费 | 成人av毛片 | 天堂国产一区二区三区 | 成人免费在线 | 人人爽人人爽人人 | 自拍偷拍国产视频 | 国产精品一区二区三区四区视频 | 91蝌蚪91密月 | 在线免费观看高清视频 | 国产91熟女高潮一区二区 | 国产美女一区二区 | 久久mm | av网站在线观看免费 | 国产传媒欧美日韩 | 封神榜二在线高清免费观看 | 操丰满女人| 都市豪门艳霸淫美妇 | 色花堂在线 | 成人一区二区三区四区 | 人人爽人人爽人人爽 | 爱乃なみ加勒比在线播放 | 激情六月婷婷 | 激情视频久久 | 操操干 | 日韩精品一二区 | 午夜成年人视频 | 日韩草比 | www日本色| 五月天黄色小说 | 久久免费视频99 | 国产中文在线观看 | 日韩激情文学 | 伊人久久久久久久久久久久 | 99re这里只有精品首页 | 天堂色在线 | 久久免费的精品国产v∧ | 欧美日韩视频无码一区二区三 | 成人免费激情视频 | 国产一区二区三区四区五区在线 |