<output id="qn6qe"></output>

    1. <output id="qn6qe"><tt id="qn6qe"></tt></output>
    2. <strike id="qn6qe"></strike>

      亚洲 日本 欧洲 欧美 视频,日韩中文字幕有码av,一本一道av中文字幕无码,国产线播放免费人成视频播放,人妻少妇偷人无码视频,日夜啪啪一区二区三区,国产尤物精品自在拍视频首页,久热这里只有精品12

      memoの關于Qt的一些用法記錄

      Qt自動調整窗口尺寸

      之前寫過,方法就是:

      QTimer::singleShot(0, this, [this]{ this->adjustSize(); });
      

      重復記錄一下。

      如何把一個Modal的窗口放到QMainWindow的中心顯示

      也挺有意思。其實就是

      auto* dlg = new MyDialog(nullptr); // 這里最好是設置為nullptr,后面記得delete掉。
      dlg->setModal(true);
      dlg->show();  // 關鍵就是這里。先show一下,然后下面去move
      dlg->move(mainWindow->frameGeometry().center() - dlg->rect().center());
      

      關于子窗口,如果是要設置為FrameLess的,如果子窗口還有parent,顯示上就會有問題。所以,我覺得設置為nullptr更好用一些。

      Qt多線程的一些問題

      都是熱乎的。

      QThread::create

      利用QThread::create可以很方便的創建一個異步調用的函數。簡單的示例如下:

      auto* thread = QThread::create([]{
          for (int i=0; i<100; ++i) {
              // do something
              QThread::msleep(100);
          }
       });
      connect(thread, &QThread::finished, &Qbject::deleteLater);  // 記得釋放掉
      thread->start();  // qt文檔特別聲明:只調用1次start
      

      connect有意思的地方

      connect(thread, &Thread::finished, [thread]{qDebug() << QThread::currentThreadId(); thread->deleteLater(); });
      connect(thread, &Thread::finished, this, [thread]{qDebug() << QThread::currentThreadId(); thread->deleteLater(); });
      

      運行一下就能看到,上面的connect是在thread線程內執行的;而下面的則是在this所在的線程執行的(this多半是QMainWindow)。

      加載進度窗

      當然,如果只是上面這點東西,不值得記錄下來。舉個實際的例子。在QMainWindow內,我們想要實現一個加載文件的action,然后加載文件的期間可能會比較慢,在這期間放置一個加載窗在哪里搖啊搖。

      首先是加載的窗口:

      WaitingDialog::WaitingDialog(QWidget *parent) : QDialog(parent), ui(new Ui::WaitingDialog)
      {
          ui->setupUi(this);
      
          this->setModal(true);
          this->setWindowFlags(Qt::FramelessWindowHint);   // 設置窗口無邊框
          this->setAttribute(Qt::WA_TranslucentBackground); // 窗口的背景透明。如果gif是透明的更好
      
          // 用movie來播放動畫
          auto *movie = new QMovie(ui->label);
          movie->setFileName(":/res/waiting.gif");
          ui->label->setMovie(movie); // UI文件就是放了一個QLabel
          movie->start();
      }
      

      然后我們就可以開始加載操作了:

      // 首先顯示一個WaitingDialog
      auto *dlg = new WaitingDialog(nullptr);
      dlg->show();
      dlg->move(this->frameGeometry().center() - dlg->rect().center());
      
      // 創建一個線程,異步調用LoadFile的操作。
      auto *thread = QThread::create([this] {
          this->loadFile(); // 不可出現ui相關的操作,qt不允許子線程操作ui的。
      });
      
      // 記得加上結束后的回調,放到主線程執行。主線程可以處理UI。
      connect(thread, &QThread::finished, this, [this, dlg, thread] {
          this->updateUI();
          dlg->close();
          dlg->deleteLater();       // 別忘了刪掉等待窗口
          thread->deleteLater();  // 別忘了刪掉線程
      });
      
      // 最關鍵的別忘了start。一次就好。
      thread->start();
      
      posted @ 2021-11-23 11:21  薛定諤の三味  閱讀(77)  評論(0)    收藏  舉報
      主站蜘蛛池模板: 亚洲成av人片天堂网无码 | 久久国产精品老女人| 国产精品视频白浆免费视频| av色国产色拍| 人妻聚色窝窝人体WWW一区| 2020年最新国产精品正在播放| 伊人欧美在线| 日韩免费视频一一二区| 最新亚洲人成网站在线观看| 人妻丰满熟妇av无码处处不卡| 97一期涩涩97片久久久久久久| 亚洲国产精品久久久天堂麻豆宅男 | 一区二区三区在线 | 欧洲| 亚洲国产欧美在线看片一国产| 中文字幕有码在线第十页| 亚洲乱码一二三四区国产| 天天综合天天添夜夜添狠狠添| 国产不卡av一区二区| 熟女人妻aⅴ一区二区三区电影| 国产精品露脸3p普通话| 亚洲真人无码永久在线| 男人猛躁进女人免费播放| 亚洲AV永久无码精品秋霞电影影院| 97久久综合亚洲色hezyo| 国产乱码精品一区二区三| 亚洲色欲色欲www在线看| 亚洲成在人线AV品善网好看| 久久无码中文字幕免费影院蜜桃| 婷婷综合久久中文字幕| 国产精品麻豆中文字幕| 亚洲性日韩精品一区二区| 成人3D动漫一区二区三区| 国产精品中文字幕综合| 精品视频一区二区三区不卡 | 日韩高清国产中文字幕| 91久久精品国产性色也| 撕开奶罩揉吮奶头高潮AV| 国产精品日日摸夜夜添夜夜添2021 | 四虎影视4hu4虎成人| 好吊视频在线一区二区三区| 国产喷水1区2区3区咪咪爱AV|