欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

使用Qt框架制作一個(gè)表白程序

 更新時(shí)間:2024年01月29日 10:16:28   作者:0zxm  
這篇文章主要為大家詳細(xì)介紹了如何使用Qt框架制作一個(gè)表白程序,文中的示例代碼講解詳細(xì),具有一定的借鑒價(jià)值,有需要的小伙伴可以參考一下

刷視頻看到大家學(xué)了圖形化界面編程后的第一件事,一定是寫(xiě)出一個(gè)表白小程序用來(lái)對(duì)自己心愛(ài)的人用來(lái)表白,而且一定要讓他接受,所以我寫(xiě)了一個(gè)qt小程序,能夠把窗口置于頂層,讓她一直感到你的愛(ài)意,而且怎么關(guān)也關(guān)不掉,正好適合對(duì)不怎么會(huì)使用電腦的人使用

當(dāng)然,關(guān)掉的方法還是有很多的,包括但不限于調(diào)出任務(wù)管理器kill掉等方法

成品展示

這是點(diǎn)擊不接受的窗口,右側(cè)是馬里奧的gif動(dòng)畫(huà)

若是不接受,會(huì)一直置于頂層

這是接受后彈出的窗口,可以拖拽

關(guān)鍵部分講解

添加動(dòng)畫(huà)

使用了qt寫(xiě)好的qmovie類,創(chuàng)建時(shí)指定動(dòng)畫(huà)資源,設(shè)置好播放速度,窗口創(chuàng)建就會(huì)開(kāi)始播放,默認(rèn)循環(huán)播放

    //添加馬里奧動(dòng)畫(huà)
    QMovie * mario = new QMovie(":/mario.gif");
    ui->marioLabel->setMovie(mario);
    ui->marioLabel->setScaledContents(true); // 將內(nèi)容縮放以適應(yīng)控件大小
    //設(shè)置播放速度
    mario->setSpeed(150);
    mario->start();

循環(huán)邏輯

這里使用connect鏈接按鈕的點(diǎn)擊事件,若是接受了,會(huì)彈出一個(gè)自定義的yes_next窗口,里面是我寫(xiě)好的從多處收集來(lái)的情詩(shī)和句子,背景我使用了愛(ài)心圖片填充

如果用戶點(diǎn)擊了不接受,就會(huì)創(chuàng)建一個(gè)循環(huán)對(duì)話框,一直監(jiān)聽(tīng)信號(hào),直到用戶點(diǎn)擊yes,在彈出yes_next對(duì)話框

// 連接按鈕的點(diǎn)擊事件
    QObject::connect(ui->pushButton_Yes, &QPushButton::clicked, [=](){
        Yes_Next *y = new Yes_Next;
        y->setVisible(true);
        y->setWindowFlag(Qt::WindowStaysOnTopHint);
        //y->setGeometry(100, 100, 400, 400); // 設(shè)置窗口位置和大小
        y->setGeometry(600,150,400,600);
        y->show();
        y->raise();
        this->close();
        //exit(0);
    });
    QObject::connect(ui->pushButton_No, &QPushButton::clicked, [=](){

        // 用戶點(diǎn)擊了 "No" 按鈕,繼續(xù)循環(huán)
        while (true) {
            QDialog loopDialog;
            loopDialog.setWindowTitle("循環(huán)對(duì)話框");
            loopDialog.setWindowFlag(Qt::WindowStaysOnTopHint);
            loopDialog.setModal(true);
            loopDialog.setFixedSize(350, 100); // 設(shè)置固定大小

            QLabel *label = new QLabel(&loopDialog);
            label->setText("你在考慮下,接不接受"); // 確保文本正確設(shè)置
            label->show();
            label->setGeometry(120, 10, 150, 35); // 設(shè)置位置和大小
            //label->setStyleSheet("border: 1px solid black"); // 添加邊框以顯示位置
            QPalette palette = label->palette();
            palette.setColor(QPalette::Text, QColor(0, 0, 255)); // 設(shè)置文本顏色為藍(lán)色
            label->setPalette(palette);

            QPushButton *btnYesLoop = new QPushButton("Yes", &loopDialog);
            QPushButton *btnNoLoop = new QPushButton("No", &loopDialog);
            btnYesLoop->setGeometry(50, 50, 100, 30);
            btnNoLoop->setGeometry(200, 50, 100, 30);

            // 設(shè)置父子關(guān)系
            btnYesLoop->setParent(&loopDialog);
            btnNoLoop->setParent(&loopDialog);

            // 連接按鈕的點(diǎn)擊事件
            QObject::connect(btnYesLoop, &QPushButton::clicked, &loopDialog, &QDialog::accept);
            QObject::connect(btnNoLoop, &QPushButton::clicked, &loopDialog, &QDialog::reject);

            // 顯示循環(huán)對(duì)話框
            if (loopDialog.exec() == QDialog::Accepted) {
                // 用戶點(diǎn)擊了 "Yes" 按鈕,退出循環(huán)
                Yes_Next *y = new Yes_Next;
                y->setGeometry(600, 150, 400, 400); // 設(shè)置窗口位置和大小
                y->show();
                y->raise();
                this->close();
                //exit(0);
                break;
            }
        }
    });

yes_next窗口

#include "yes_next.h"
#include "ui_yes_next.h"

Yes_Next::Yes_Next(QWidget *parent)
    : QWidget(parent)
    , ui(new Ui::Yes_Next)
{
    ui->setupUi(this);
    this->setWindowTitle("poems");

    /*使用HTML標(biāo)記:你可以使用HTML標(biāo)記來(lái)在QLabel中顯示換行文字。例如,你可以使用<br>標(biāo)記來(lái)表示換行。示例代碼如下:
        ui->label->setText("第一行文字<br>第二行文字");
    使用QLabel的setWordWrap方法:你可以使用setWordWrap方法來(lái)啟用QLabel的自動(dòng)換行功能。示例代碼如下:
        ui->label->setText("這是一段很長(zhǎng)的文字,當(dāng)文字超出label的大小時(shí)會(huì)自動(dòng)換行");
        ui->label->setWordWrap(true);
    這兩種方法都可以用來(lái)在QLabel中顯示換行文字。你可以根據(jù)你的需求選擇其中一種方法*/

    QString poem = "<br>莎士比亞的《十四行詩(shī)》:<br>“我能否將你比作夏日?<br>但你比夏日更可愛(ài)也更溫柔?!?lt;br>"
                   "<br>杰拉爾德的《未與你共度一切》:<br>“我曾遇到過(guò)無(wú)數(shù)生靈,曾看過(guò)無(wú)數(shù)美景,<br>這一切卻未與你共度,<br>這都會(huì)是我的損失;<br>這些事情我都想與你共度,"
                   "<br>這一切才會(huì)是我的收獲?!?lt;br><br>波伏娃的《越洋情書(shū)》:<br>“唯有你也想見(jiàn)我的時(shí)候,我們的見(jiàn)面才有意義?!?lt;br><br>“猶如飛蛾撲向星星,又如黑夜追求黎明?!?lt;br><br>“見(jiàn)你第一眼我就淪陷了?!?lt;br><br>“他是我的南北,"
                   "我的西東,我的工作日,我的禮拜天,我的正午,我的深夜,我的言語(yǔ),我的歌聲。我認(rèn)為愛(ài)可以不朽?!?;

    ui->label->setText(poem);
    ui->label->setStyleSheet("background-color: pink; font-style: italic; font-family: 華文楷體;");
    QFont font = ui->label->font(); // 獲取label的當(dāng)前字體
    font.setPointSize(16); // 設(shè)置字體大小為16
    ui->label->setFont(font); // 應(yīng)用新的字體
    ui->label->setWordWrap(true);

    // 設(shè)置背景圖片
    QString imagePath = "url(:/loveheart.jfif)"; // 替換成你的圖片路徑
    this->setStyleSheet("background-image: "+ imagePath + "; background-position: center; background-attachment: fixed;");
    /*使用background-size屬性來(lái)指定背景圖片的大小和填充方式。例如,你可以設(shè)置為background-size: cover;
     * 來(lái)讓背景圖片覆蓋整個(gè)窗口,或者設(shè)置為background-size: contain;來(lái)讓背景圖片完整顯示在窗口內(nèi),不進(jìn)行裁剪。*/
    //background-repeat: no-repeat不重復(fù)
}


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

這個(gè)窗口里面有使用到一些html和qss之類的知識(shí),我都在注釋中寫(xiě)了,看注釋就可以

Qt打包成品

如果不打包的話,這個(gè)程序只能在qt框架中使用,到別人的電腦上不一定能用(缺少依賴環(huán)境),所以最好把成品打包,再發(fā)給別人

release

箭頭處切換成release版本在編譯運(yùn)行

找到release的生成文件夾,一般就在項(xiàng)目的同級(jí)目錄下

找到.exe文件,復(fù)制到任意一個(gè)空文件夾

右鍵在終端中打開(kāi)

輸入windeployqt “你的exe程序名字”,就會(huì)幫你自動(dòng)打包需要的資源文件,最后放在此文件夾中,然后你就可以把這個(gè)文件夾發(fā)給別人開(kāi)心的玩耍了!

到此這篇關(guān)于使用Qt框架制作一個(gè)表白程序的文章就介紹到這了,更多相關(guān)Qt表白程序內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • QT實(shí)戰(zhàn)之打開(kāi)最近圖片功能的實(shí)現(xiàn)

    QT實(shí)戰(zhàn)之打開(kāi)最近圖片功能的實(shí)現(xiàn)

    這篇文章主要為大家詳細(xì)介紹了如何利用Qt和QSettings實(shí)現(xiàn)打開(kāi)最近圖片功能,文中的示例代碼講解詳細(xì),對(duì)我們學(xué)習(xí)QT有一定的幫助,感興趣的可以了解一下
    2022-06-06
  • C語(yǔ)言常見(jiàn)排序算法之插入排序(直接插入排序,希爾排序)

    C語(yǔ)言常見(jiàn)排序算法之插入排序(直接插入排序,希爾排序)

    這篇文章介紹C語(yǔ)言常見(jiàn)排序算法之插入排序(直接插入排序,希爾排序),主要分享介紹的是插入排序的兩種常用算法,直接插入排序和希爾排序,需要的朋友可以參考一下
    2022-07-07
  • 詳解C#byte數(shù)組怎么傳入C

    詳解C#byte數(shù)組怎么傳入C

    在本篇內(nèi)容里小編給大家整理了關(guān)于C#byte數(shù)組怎么傳入C的相關(guān)知識(shí)點(diǎn)內(nèi)容,有興趣的朋友們學(xué)習(xí)參考下。
    2019-03-03
  • C++中內(nèi)存分區(qū)及其作用分析

    C++中內(nèi)存分區(qū)及其作用分析

    C++內(nèi)存分區(qū)包括棧區(qū)、堆區(qū)、全局靜態(tài)區(qū)、常量區(qū),各自負(fù)責(zé)不同的數(shù)據(jù)存儲(chǔ)和回收,棧區(qū)主要用于存放函數(shù)局部變量和參數(shù),堆區(qū)用于動(dòng)態(tài)分配內(nèi)存,全局靜態(tài)區(qū)用于存放全局靜態(tài)變量和靜態(tài)成員變量,常量區(qū)用于存放常量和字符串常量
    2023-04-04
  • C++利用類實(shí)現(xiàn)矩陣的數(shù)乘,乘法以及點(diǎn)乘

    C++利用類實(shí)現(xiàn)矩陣的數(shù)乘,乘法以及點(diǎn)乘

    這篇文章主要為大家詳細(xì)介紹了C++如何利用類實(shí)現(xiàn)矩陣的數(shù)乘,乘法以及點(diǎn)乘,文中的示例代碼講解詳細(xì),對(duì)我們學(xué)習(xí)C++有一定幫助,需要的可以參考一下
    2022-11-11
  • C++中的友元函數(shù)與友元類詳情

    C++中的友元函數(shù)與友元類詳情

    這篇文章主要介紹了C++中的友元函數(shù)與友元類詳情,對(duì)類的封裝是C++三大特性中的一個(gè)重要特性,封裝好的數(shù)據(jù)在類的外部是訪問(wèn)不到的但是一旦出了問(wèn)題,想要操作被封裝的數(shù)據(jù)怎么辦呢?由此友元函數(shù)友元類誕生了,下文我們來(lái)詳細(xì)來(lái)接一下具體的有緣類吧
    2022-02-02
  • Mingw64編譯wxWidgets 3.0.2常見(jiàn)錯(cuò)誤分析

    Mingw64編譯wxWidgets 3.0.2常見(jiàn)錯(cuò)誤分析

    這篇文章主要介紹了Mingw64編譯wxWidgets 3.0.2常見(jiàn)錯(cuò)誤分析,需要的朋友可以參考下
    2016-11-11
  • C++中sln,vcxproj,vcxproj.filters,lib,dll,exe的含義說(shuō)明

    C++中sln,vcxproj,vcxproj.filters,lib,dll,exe的含義說(shuō)明

    這篇文章主要介紹了C++中sln,vcxproj,vcxproj.filters,lib,dll,exe的含義說(shuō)明,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2024-05-05
  • C++實(shí)現(xiàn)LeetCode(23.合并k個(gè)有序鏈表)

    C++實(shí)現(xiàn)LeetCode(23.合并k個(gè)有序鏈表)

    這篇文章主要介紹了C++實(shí)現(xiàn)LeetCode(23.合并k個(gè)有序鏈表),本篇文章通過(guò)簡(jiǎn)要的案例,講解了該項(xiàng)技術(shù)的了解與使用,以下就是詳細(xì)內(nèi)容,需要的朋友可以參考下
    2021-07-07
  • C++實(shí)現(xiàn)一鍵關(guān)閉桌面的示例代碼

    C++實(shí)現(xiàn)一鍵關(guān)閉桌面的示例代碼

    這篇文章主要為大家詳細(xì)介紹了如何利用C++實(shí)現(xiàn)一鍵關(guān)閉桌面的功能,文中的示例代碼講解詳細(xì),具有一定的學(xué)習(xí)價(jià)值,感興趣的小伙伴可以了解一下
    2023-07-07

最新評(píng)論