中文亚洲精品无码_熟女乱子伦免费_人人超碰人人爱国产_亚洲熟妇女综合网

當(dāng)前位置: 首頁 > news >正文

建設(shè)網(wǎng)站商城鄭州seo顧問熱狗hotdoger

建設(shè)網(wǎng)站商城,鄭州seo顧問熱狗hotdoger,龍巖做網(wǎng)站的公司,順德制作網(wǎng)站一、要實現(xiàn)的功能 在窗口中可以顯示圖片,并且能夠通過兩個按鈕進(jìn)行圖片的前進(jìn)和后退的順序切換。有一個按鈕,通過這個按鈕可以從所存圖片資源中隨機(jī)選取一個圖片進(jìn)行展示通過按鈕可以控制圖片自動輪播順序切換的開始與停止,顯示當(dāng)前系統(tǒng)的時…

一、要實現(xiàn)的功能

  1. 在窗口中可以顯示圖片,并且能夠通過兩個按鈕進(jìn)行圖片的前進(jìn)和后退的順序切換。
  2. 有一個按鈕,通過這個按鈕可以從所存圖片資源中隨機(jī)選取一個圖片進(jìn)行展示
  3. 通過按鈕可以控制圖片自動輪播順序切換的開始與停止,
  4. 顯示當(dāng)前系統(tǒng)的時間。

二、實現(xiàn)思路

可以使用標(biāo)簽組件QLabel來顯示圖片,需要主要的是圖片的大小與Qlabel之間大小關(guān)系。圖片顯示載體的問題解決后,再思考圖片資源的讀取途徑,由于圖片的前后切換需要順序的遍歷圖片資源,所以我們可以用順序容器QList 來創(chuàng)建一個列表對象,將所需的圖片的路徑保存在該列表中,這樣我們在找圖片時就可以通過 QList 列表的下表的加加減減來進(jìn)行順序選擇對應(yīng)圖片的路徑,同時也可以隨機(jī)產(chǎn)生一個列表下表隨機(jī)選擇一張圖片。然后再考慮按鈕點擊和圖片切換功能之間的綁定關(guān)系,很明顯可以使用信號與槽來實現(xiàn),自定義槽函數(shù),槽函數(shù)中實現(xiàn)圖片切換的對應(yīng)功能,按鈕觸發(fā)自帶的clicked信號,按鈕信號與自定義槽函數(shù)綁定,這樣就可以實現(xiàn)點擊按鈕切換圖片的效果了。

對于圖片的自動切換,可以通過定時器QTimer 來指定圖片自動輪播的間隔時間,時間間隔一到就觸發(fā)對應(yīng)的圖片切換槽函數(shù)。

顯示當(dāng)前的系統(tǒng)時間的話,可以通過QDateTime獲取當(dāng)前系統(tǒng)的時間,然后使用QLCDNumber組件來顯示。

三、實現(xiàn)的基本步驟

由于界面不太復(fù)雜,沒有多重界面之間的切換,所以再新建項目工程文件時,下面的這一界面中的基類選則可以為QDialog,同時為了方便界面各個組件的設(shè)計,可以勾選上下面的“創(chuàng)建界面”選項。
在這里插入圖片描述
界面布局:
在這里插入圖片描述
對于圖片資源,為了較好的顯示效果,我都將圖片裁剪成了相同的大小,圖片的添加過程如下:

  1. 找到圖片資源,格式要求為jpg、png、bmp,不要選擇過大的圖片(分辨率、文件大小)。
  2. 更改圖片名稱,名稱建議為全英文、下劃線和數(shù)字組合,且英文全小寫,數(shù)字不能開頭。
  3. 把圖片放置到工作目錄中。
  4. 在Qt Creator中選中項目名稱,鼠標(biāo)右鍵,點擊“添加新文件”。
  5. 按照下圖所示進(jìn)行操作。在這里插入圖片描述
  6. 在彈出的窗口中設(shè)置資源文件名稱在這里插入圖片描述
  7. 在項目管理界面,直接點擊完成。可以看到項目中多了一個.qrc的資源文件。在這里插入圖片描述
  8. 選中qrc文件,點擊“添加前綴”。在這里插入圖片描述
  9. 再次點擊添加里面的添加文件在這里插入圖片描述
    在彈出的對話框窗口中選中要添加的圖片文件。添加成功后會在qrc文件中顯示出來。
  10. 點擊Qt Creater左下角的錘子🔨,對項目進(jìn)行構(gòu)建一下,其實就是編譯一下,這樣資源文件就可以被Designer找到,隨后就可以在 Designer 中設(shè)置圖片了。

創(chuàng)建QList對象,存放圖片路徑:
在這里插入圖片描述
在這里插入圖片描述
圖片路徑存放在imglist列表中,可以通過imglist.at(i)來取元素,為了在其他成員函數(shù)中都能夠獲取當(dāng)前顯示的是哪張圖片,需要在Dialog類中設(shè)置一個用于保存正在顯示的圖片在imglist列表中的下標(biāo),如下:
在這里插入圖片描述
定義點擊按鈕切換圖片的槽函數(shù)聲名:
在這里插入圖片描述
然后編寫顯示上一張的按鈕、顯示下一張的按鈕隨機(jī)顯示圖片的按鈕對應(yīng)的槽函數(shù):👇
在這里插入圖片描述
其中要注意的是隨機(jī)數(shù)的產(chǎn)生方法,先使用QDateTime類下的currentMSecsSinceEpoch()成員函數(shù)返回一個1970-1-1 00:00:00到到現(xiàn)在的毫秒數(shù)的一個時間,然后使用這個時間作為生成隨機(jī)數(shù)的種子,調(diào)用qrand()產(chǎn)生隨機(jī)數(shù)。

圖片的輪播使用的是QTimer定時器實現(xiàn),通過其成員函數(shù)start()開啟一個定時器👇
在這里插入圖片描述
在這里插入圖片描述
在這里插入圖片描述
定時時間到后觸發(fā)timeout()信號,故也用信號槽來實現(xiàn),定時時間到后的槽函數(shù)就是切換下一張圖片,和上面的代碼類似👇
在這里插入圖片描述
在這里插入圖片描述

對于圖片輪播開始或結(jié)束按鈕的槽函數(shù)👇
在這里插入圖片描述
在這里插入圖片描述

對于時間顯示,也要設(shè)置一個定時器來實現(xiàn),可以定時一秒,定時時間一到就釋放timeout()的信號,同時自定義一個槽函數(shù)來更新QLCDNumber上面的時間顯示,對應(yīng)代碼如下:👇
在這里插入圖片描述
在這里插入圖片描述

三、運(yùn)行效果圖

在這里插入圖片描述

四、項目代碼

dialog.h

#ifndef DIALOG_H
#define DIALOG_H#include <QDialog>
#include <QDebug>
#include <QString>
#include <QDateTime>
#include <QList>
#include <QTimer>namespace Ui {
class Dialog;
}class Dialog : public QDialog
{Q_OBJECTpublic:explicit Dialog(QWidget *parent = 0);~Dialog();private:Ui::Dialog *ui;int imgnum; // 圖片序號bool flag = true; // 輪播按鈕狀態(tài)標(biāo)志QPixmap *pix;   // 建立QPixmap對象QTimer *timer; //設(shè)置定時器QTimer *flashtimer; // 1秒刷新QList<QString> imglist; // 圖片路徑列表
private slots:void preImgBtnSlot(); // 前一張圖片槽函數(shù)void nextImgBtnSlot(); // 后一張圖片槽函數(shù)void randomImgBtnSlot(); // 隨機(jī)圖片槽函數(shù)void carouseBtnSlot(); // 輪播開始o(jì)r暫停按鈕槽函數(shù)void imgCarouselSlot(); //圖片自動輪播槽函數(shù)void updateTimeSlot();
};#endif // DIALOG_H

dialog.cpp

#include "dialog.h"
#include "ui_dialog.h"Dialog::Dialog(QWidget *parent) :QDialog(parent),ui(new Ui::Dialog),imgnum(0)
{ui->setupUi(this);pix = new QPixmap;timer = new QTimer;flashtimer = new QTimer;timer->start(2000); // 設(shè)置2秒定時flashtimer->start(1000);QString imgpath1 = ":/new/prefix1/image/img1.jpg";QString imgpath2 = ":/new/prefix1/image/img2.jpg";QString imgpath3 = ":/new/prefix1/image/img3.jpg";QString imgpath4 = ":/new/prefix1/image/img4.jpg";QString imgpath5 = ":/new/prefix1/image/img5.jpg";imglist <<imgpath1 <<imgpath2 <<imgpath3 <<imgpath4 <<imgpath5;connect(ui->prePushBtn,SIGNAL(clicked()),this,SLOT(preImgBtnSlot()));connect(ui->nextPushBtn,SIGNAL(clicked()),this,SLOT(nextImgBtnSlot()));connect(ui->randomPushBtn,SIGNAL(clicked()),this,SLOT(randomImgBtnSlot()));connect(ui->carousePushBtn,SIGNAL(clicked()),this,SLOT(carouseBtnSlot()));connect(ui->pushButtonClose,SIGNAL(clicked()),this,SLOT(close())); // 關(guān)閉窗口connect(flashtimer,SIGNAL(timeout()),this,SLOT(updateTimeSlot()));// 定時器信號槽connect(timer,SIGNAL(timeout()),this,SLOT(imgCarouselSlot()));//    for(int i=0; i<imglist.size(); i++)//    {//        QString str = imglist.at(i);//        qDebug() <<str;//    }
}Dialog::~Dialog()
{delete ui;delete pix;delete timer;
}void Dialog::preImgBtnSlot()
{imgnum = (imgnum + 5 - 1) % 5;//qDebug() << "圖片" << imgnum;pix->load(imglist.at(imgnum)); // 加載imglist中的前一張圖片ui->label->setPixmap(*pix); // 將圖片設(shè)置到QLbel上ui->label_imgName->setText(QString::number(imgnum+1)); // 圖片序號顯示
}void Dialog::nextImgBtnSlot()
{imgnum = (imgnum + 1) % 5;//qDebug() << "圖片" << imgnum;pix->load(imglist.at(imgnum));ui->label->setPixmap(*pix);ui->label_imgName->setText(QString::number(imgnum+1));
}void Dialog::randomImgBtnSlot()
{qint64 time = QDateTime::currentMSecsSinceEpoch();qsrand(time);int rand = qrand()%5; // 生成0-4的隨機(jī)數(shù)imgnum = rand;//qDebug() << "隨機(jī)圖片" << imgnum;pix->load(imglist.at(imgnum));ui->label->setPixmap(*pix);ui->label_imgName->setText(QString::number(imgnum+1));
}void Dialog::carouseBtnSlot()
{flag = !flag;if(flag){timer->start(2000); // 啟動定時器ui->carousePushBtn->setText("停止輪播");}else{timer->stop(); // 停止定時器ui->carousePushBtn->setText("開始輪播");}
}void Dialog::imgCarouselSlot()
{imgnum = (imgnum + 1) % 5;pix->load(imglist.at(imgnum));ui->label->setPixmap(*pix);ui->label_imgName->setText(QString::number(imgnum+1));
}void Dialog::updateTimeSlot()
{QDateTime now = QDateTime::currentDateTime();// 轉(zhuǎn)換為固定格式QString time_text = now.toString("yyyy-MM-dd hh:mm:ss");//qDebug() << text; // "2023-10-20 16:00:44"ui->lcdDate->display(time_text);
}

main.cpp

#include "dialog.h"
#include <QApplication>int main(int argc, char *argv[])
{QApplication a(argc, argv);Dialog w;w.show();return a.exec();
}
http://www.risenshineclean.com/news/30717.html

相關(guān)文章:

  • 長春市疫情防控最新政策天津seo實戰(zhàn)培訓(xùn)
  • seo做子網(wǎng)站網(wǎng)絡(luò)商城應(yīng)該如何推廣
  • 網(wǎng)站做眾籌需哪些條件china東莞seo
  • 網(wǎng)站建設(shè)誤區(qū)圖交易平臺官網(wǎng)
  • 深圳模板網(wǎng)站建設(shè)設(shè)計公司排名優(yōu)化方法
  • 網(wǎng)站域名備案查詢官網(wǎng)百度競價排名的利與弊
  • 上海建溧建設(shè)集團(tuán)有限公司網(wǎng)站百度網(wǎng)頁版登錄
  • wordpress打不開主頁一點優(yōu)化
  • 找做網(wǎng)站的朋友電商數(shù)據(jù)統(tǒng)計網(wǎng)站
  • 注冊外貿(mào)公司seo咨詢
  • 哈爾濱網(wǎng)站建設(shè)制作價格如何推廣一款app
  • 豬八戒做網(wǎng)站靠譜嗎國際最新新聞
  • 網(wǎng)站建設(shè)與開發(fā)做什么足球世界排名國家最新
  • 商城購物網(wǎng)站建設(shè)方案短視頻營銷策略
  • 東莞手機(jī)網(wǎng)站建設(shè)網(wǎng)站怎么優(yōu)化關(guān)鍵詞
  • 遵義做什么網(wǎng)站好seo門戶
  • 石家莊網(wǎng)站運(yùn)營公司最新新聞事件
  • 口碑好的常州做網(wǎng)站app開發(fā)用什么軟件
  • 可以充值的網(wǎng)站怎么做互聯(lián)網(wǎng)金融
  • 煙臺網(wǎng)站推廣排名競價推廣代運(yùn)營
  • 做一個類似京東的網(wǎng)站免費發(fā)布推廣的平臺
  • 南京制作網(wǎng)站公司網(wǎng)站seo1視頻發(fā)布會
  • php動態(tài)網(wǎng)站開發(fā)案例教程china東莞seo
  • 蘇州網(wǎng)站制作設(shè)計西安網(wǎng)絡(luò)seo公司
  • wordpress限制ip訪問次數(shù)網(wǎng)站seo報價
  • 網(wǎng)站開發(fā)大學(xué)是什么專業(yè)中國目前最好的搜索引擎
  • wordpress怎么掙錢常見的系統(tǒng)優(yōu)化軟件
  • 蘇州實力做網(wǎng)站公司人員優(yōu)化方案怎么寫
  • 做微商進(jìn)哪個網(wǎng)站安全蟻坊軟件輿情監(jiān)測系統(tǒng)
  • 網(wǎng)頁設(shè)計與制作教程西北工業(yè)大學(xué)廣州網(wǎng)站優(yōu)化步驟