使用Qt框架制作一個表白程序
刷視頻看到大家學了圖形化界面編程后的第一件事,一定是寫出一個表白小程序用來對自己心愛的人用來表白,而且一定要讓他接受,所以我寫了一個qt小程序,能夠把窗口置于頂層,讓她一直感到你的愛意,而且怎么關也關不掉,正好適合對不怎么會使用電腦的人使用
當然,關掉的方法還是有很多的,包括但不限于調出任務管理器kill掉等方法
成品展示
這是點擊不接受的窗口,右側是馬里奧的gif動畫
若是不接受,會一直置于頂層

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

關鍵部分講解
添加動畫
使用了qt寫好的qmovie類,創(chuàng)建時指定動畫資源,設置好播放速度,窗口創(chuàng)建就會開始播放,默認循環(huán)播放
//添加馬里奧動畫
QMovie * mario = new QMovie(":/mario.gif");
ui->marioLabel->setMovie(mario);
ui->marioLabel->setScaledContents(true); // 將內容縮放以適應控件大小
//設置播放速度
mario->setSpeed(150);
mario->start();
循環(huán)邏輯
這里使用connect鏈接按鈕的點擊事件,若是接受了,會彈出一個自定義的yes_next窗口,里面是我寫好的從多處收集來的情詩和句子,背景我使用了愛心圖片填充
如果用戶點擊了不接受,就會創(chuàng)建一個循環(huán)對話框,一直監(jiān)聽信號,直到用戶點擊yes,在彈出yes_next對話框
// 連接按鈕的點擊事件
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); // 設置窗口位置和大小
y->setGeometry(600,150,400,600);
y->show();
y->raise();
this->close();
//exit(0);
});
QObject::connect(ui->pushButton_No, &QPushButton::clicked, [=](){
// 用戶點擊了 "No" 按鈕,繼續(xù)循環(huán)
while (true) {
QDialog loopDialog;
loopDialog.setWindowTitle("循環(huán)對話框");
loopDialog.setWindowFlag(Qt::WindowStaysOnTopHint);
loopDialog.setModal(true);
loopDialog.setFixedSize(350, 100); // 設置固定大小
QLabel *label = new QLabel(&loopDialog);
label->setText("你在考慮下,接不接受"); // 確保文本正確設置
label->show();
label->setGeometry(120, 10, 150, 35); // 設置位置和大小
//label->setStyleSheet("border: 1px solid black"); // 添加邊框以顯示位置
QPalette palette = label->palette();
palette.setColor(QPalette::Text, QColor(0, 0, 255)); // 設置文本顏色為藍色
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);
// 設置父子關系
btnYesLoop->setParent(&loopDialog);
btnNoLoop->setParent(&loopDialog);
// 連接按鈕的點擊事件
QObject::connect(btnYesLoop, &QPushButton::clicked, &loopDialog, &QDialog::accept);
QObject::connect(btnNoLoop, &QPushButton::clicked, &loopDialog, &QDialog::reject);
// 顯示循環(huán)對話框
if (loopDialog.exec() == QDialog::Accepted) {
// 用戶點擊了 "Yes" 按鈕,退出循環(huán)
Yes_Next *y = new Yes_Next;
y->setGeometry(600, 150, 400, 400); // 設置窗口位置和大小
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標記:你可以使用HTML標記來在QLabel中顯示換行文字。例如,你可以使用<br>標記來表示換行。示例代碼如下:
ui->label->setText("第一行文字<br>第二行文字");
使用QLabel的setWordWrap方法:你可以使用setWordWrap方法來啟用QLabel的自動換行功能。示例代碼如下:
ui->label->setText("這是一段很長的文字,當文字超出label的大小時會自動換行");
ui->label->setWordWrap(true);
這兩種方法都可以用來在QLabel中顯示換行文字。你可以根據(jù)你的需求選擇其中一種方法*/
QString poem = "<br>莎士比亞的《十四行詩》:<br>“我能否將你比作夏日?<br>但你比夏日更可愛也更溫柔?!?lt;br>"
"<br>杰拉爾德的《未與你共度一切》:<br>“我曾遇到過無數(shù)生靈,曾看過無數(shù)美景,<br>這一切卻未與你共度,<br>這都會是我的損失;<br>這些事情我都想與你共度,"
"<br>這一切才會是我的收獲?!?lt;br><br>波伏娃的《越洋情書》:<br>“唯有你也想見我的時候,我們的見面才有意義?!?lt;br><br>“猶如飛蛾撲向星星,又如黑夜追求黎明?!?lt;br><br>“見你第一眼我就淪陷了?!?lt;br><br>“他是我的南北,"
"我的西東,我的工作日,我的禮拜天,我的正午,我的深夜,我的言語,我的歌聲。我認為愛可以不朽?!?;
ui->label->setText(poem);
ui->label->setStyleSheet("background-color: pink; font-style: italic; font-family: 華文楷體;");
QFont font = ui->label->font(); // 獲取label的當前字體
font.setPointSize(16); // 設置字體大小為16
ui->label->setFont(font); // 應用新的字體
ui->label->setWordWrap(true);
// 設置背景圖片
QString imagePath = "url(:/loveheart.jfif)"; // 替換成你的圖片路徑
this->setStyleSheet("background-image: "+ imagePath + "; background-position: center; background-attachment: fixed;");
/*使用background-size屬性來指定背景圖片的大小和填充方式。例如,你可以設置為background-size: cover;
* 來讓背景圖片覆蓋整個窗口,或者設置為background-size: contain;來讓背景圖片完整顯示在窗口內,不進行裁剪。*/
//background-repeat: no-repeat不重復
}
Yes_Next::~Yes_Next()
{
delete ui;
}
這個窗口里面有使用到一些html和qss之類的知識,我都在注釋中寫了,看注釋就可以
Qt打包成品
如果不打包的話,這個程序只能在qt框架中使用,到別人的電腦上不一定能用(缺少依賴環(huán)境),所以最好把成品打包,再發(fā)給別人
release

箭頭處切換成release版本在編譯運行
找到release的生成文件夾,一般就在項目的同級目錄下

找到.exe文件,復制到任意一個空文件夾

右鍵在終端中打開

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

到此這篇關于使用Qt框架制作一個表白程序的文章就介紹到這了,更多相關Qt表白程序內容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!
相關文章
C語言函數(shù)指針數(shù)組實現(xiàn)計算器功能
這篇文章主要通過C語言函數(shù)指針數(shù)組實現(xiàn)了計算器的功能,是一個很好而且流程詳細的小例子,感興趣的新手朋友們可以自己動手也寫一遍2022-04-04
C++中declspec(dllexport)和declspec(dllimport)?的用法介紹
這篇文章介紹了C++中declspec(dllexport)和declspec(dllimport)?的用法,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧2022-04-04

