Qt + Python + OpenCV图标替换工具 之 Qt界面设计(四)
生活随笔
收集整理的這篇文章主要介紹了
Qt + Python + OpenCV图标替换工具 之 Qt界面设计(四)
小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.
目錄
?
上一篇博文
程序的下載地址以及源碼
Qt界面設(shè)計
?
上一篇博文
Qt + Python + OpenCV圖標(biāo)替換工具 之 Python調(diào)用dll(三)
https://blog.csdn.net/qq78442761/article/details/85941704
?
?
程序的下載地址以及源碼
源碼已經(jīng)打包:
運(yùn)行版本(release版本(編譯好)下載地址如下):
https://download.csdn.net/download/qq78442761/10899496
?
源碼下載地址如下:
https://download.csdn.net/download/qq78442761/10899518
?
Qt界面設(shè)計
Qt界面結(jié)構(gòu)如下:
?
界面運(yùn)行截圖如下:
?
這里把使用自定義界面,就是把系統(tǒng)的標(biāo)題欄和邊框全部去掉!
setWindowFlags(Qt::Window | Qt::FramelessWindowHint);setAttribute(Qt::WA_TranslucentBackground);然后再使用重寫下面三個事件:
void mouseMoveEvent(QMouseEvent * event) Q_DECL_OVERRIDE;void mousePressEvent(QMouseEvent *event) Q_DECL_OVERRIDE;void mouseReleaseEvent(QMouseEvent *event) Q_DECL_OVERRIDE;重寫
void paintEvent(QPaintEvent *event) Q_DECL_OVERRIDE;可以實現(xiàn)制作圓角界面:
void PicWidget::paintEvent(QPaintEvent *event) {QPainter painter(this);painter.setRenderHint(QPainter::Antialiasing);painter.setBrush(QBrush(Qt::white));painter.setPen(Qt::black);QRect rect = this->rect();rect.setWidth(rect.width() - 1);rect.setHeight(rect.height() - 1);painter.drawRoundedRect(rect, 15, 15);QWidget::paintEvent(event); }?
這里再說明最后一點:
也就是 “用戶提示” 手冊,這里使用了QGraphicsView框架!
這里是構(gòu)造一個界面,然后最大話,在吧item放到界面上即可:
ShowGraphicsView::ShowGraphicsView(QWidget *parent) : QGraphicsView(parent) {this->setWindowTitle("用戶使用手冊");setStyleSheet("background: transparent;border:0px");setHorizontalScrollBarPolicy(Qt::ScrollBarAlwaysOff);setVerticalScrollBarPolicy(Qt::ScrollBarAlwaysOff);setRenderHints(renderHints() | QPainter::Antialiasing | QPainter::SmoothPixmapTransform);setWindowFlags(Qt::Window | Qt::FramelessWindowHint | Qt::WindowStaysOnTopHint);setAttribute(Qt::WA_TranslucentBackground);m_scene = new QGraphicsScene;this->setScene(m_scene);this->setGeometry(0, 0, 100, 100); }?
通過添加item實現(xiàn)界面上顯示文字,如下圖:
?
void ShowGraphicsView::addTextItem(const int &posX, const int &posY, const QString &text) {TipGraphicsItem *item = new TipGraphicsItem;item->setPos(posX, posY);item->setShowText(text);m_scene->addItem(item); }?
添加文字的源碼如下:
void PicWidget::manualBtnClicked() {QRect screenRect = QApplication::desktop()->screenGeometry();m_showGraphicsView->fixSceneWindow(screenRect.width(), screenRect.height());m_showGraphicsView->show();m_showGraphicsView->addTextItem(pos().x() + ui->iconLabel->pos().x() - 40, pos().y() + ui->iconLabel->pos().y() - 15, "程序的icon");m_showGraphicsView->addTextItem(pos().x() + ui->closeLabel->pos().x() - 40, pos().y() + ui->closeLabel->pos().y() - 15, "程序的關(guān)閉按鈕");m_showGraphicsView->addTextItem(pos().x() + ui->choosePicLabel->pos().x() - 40, pos().y() + ui->choosePicLabel->pos().y() + 75, "選著一張圖片");m_showGraphicsView->addTextItem(pos().x() + ui->chooseColorLabel->pos().x() - 20, pos().y() + ui->chooseColorLabel->pos().y() + 75, "選著圖片后選著一個顏色");m_showGraphicsView->addTextItem(pos().x() + ui->productLabel->pos().x(), pos().y() + ui->productLabel->pos().y() + 75, "調(diào)用py生成圖片并讀取");m_showGraphicsView->addTextItem(pos().x() + ui->changeProLabel->pos().x() - 10, pos().y() + ui->changeProLabel->pos().y() + 80, "轉(zhuǎn)化算法,生成其他圖片");m_showGraphicsView->addTextItem(pos().x() + ui->howToUseLabel->pos().x() - 40, pos().y() + ui->howToUseLabel->pos().y() + 90, "用戶使用手冊");m_showGraphicsView->addTextItem(pos().x() + ui->genLabel5->pos().x() + 90, pos().y() + ui->genLabel5->pos().y() + 90, "生成圖片的位置,右擊保存");QEventLoop loop;QTimer::singleShot(5 * 1000, &loop, SLOT(quit()));loop.exec();m_showGraphicsView->hide();m_showGraphicsView->clearItem(); }?
?
?
總結(jié)
以上是生活随笔為你收集整理的Qt + Python + OpenCV图标替换工具 之 Qt界面设计(四)的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Qt工作笔记-通过 对象树 或 dele
- 下一篇: C++ STL string的构造函数