国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專欄INFORMATION COLUMN

C/C++ Qt 基礎(chǔ)通用組件應(yīng)用

YPHP / 2769人閱讀

摘要:該組件有兩個(gè)版本,用于顯示整數(shù)與單精度浮點(diǎn)數(shù),則是雙精度浮點(diǎn)數(shù),有兩個(gè)特殊參數(shù),參數(shù)是在前方加入特殊符號(hào),而則是在后方加入特殊符號(hào)。

QT 是一個(gè)跨平臺(tái)C++圖形界面開發(fā)庫(kù),利用QT可以快速開發(fā)跨平臺(tái)窗體應(yīng)用程序,在QT中我們可以通過(guò)拖拽的方式將不同組件放到指定的位置,實(shí)現(xiàn)圖形化開發(fā)極大的方便了開發(fā)效率。

目前,QT開發(fā)中常用的基礎(chǔ)組件有以下幾種:

  • PushButton 按鈕組件
  • LineEdit 單行輸入組件
  • SpinBox 數(shù)值組件
  • HorizontalSlider 滑塊條組件
  • LCDNumber 數(shù)碼表與LCD屏幕
  • ComBox 下拉框組件
  • ProgressBar 進(jìn)度條與定時(shí)器
  • DateTime 日期與時(shí)間組件
  • PlainTextEdit 多行文本框
  • RadioButton 單選框分組

如上方列表中提到的的組件,就是在開發(fā)中經(jīng)常被使用的,這些組件我將通過(guò)一個(gè)個(gè)小案例,幫助大家理解組件的應(yīng)用方式與應(yīng)用場(chǎng)景。

PushButton 按鈕組件: 在QT中任何組件都可以用兩種創(chuàng)建方式,我們可以通過(guò)使用new關(guān)鍵字動(dòng)態(tài)創(chuàng)建按鈕,也可以使用QT的圖形化工具自動(dòng)生成。

首先我們通過(guò)命令行的方式生成幾個(gè)按鈕,導(dǎo)入QPushButton包,然后定義如下代碼,通過(guò)調(diào)用connect()可實(shí)現(xiàn)對(duì)特定按鈕賦予特定的函數(shù)事件。

#include "mainwindow.h"#include "ui_mainwindow.h"#include #include // 設(shè)置函數(shù),用于綁定事件void Print(){    std::cout << "hello lyshark" << std::endl;}MainWindow::MainWindow(QWidget *parent): QMainWindow(parent), ui(new Ui::MainWindow){    ui->setupUi(this);    // 創(chuàng)建[退出]按鈕    QPushButton * btn = new QPushButton;   // 創(chuàng)建一個(gè)按鈕    // btn->show();                        // 用頂層方法彈出按鈕    btn->setParent(this);                  // 設(shè)置父窗體(將btn內(nèi)嵌到主窗體中)    btn->setText("退出");                   // 設(shè)置按鈕text顯示    btn->move(100,200);                    // 移動(dòng)按鈕位置    btn->resize(100,50);                   // 設(shè)置按鈕大小    btn->setEnabled(true);                 // 設(shè)置是否可被點(diǎn)擊    // 創(chuàng)建[觸發(fā)信號(hào)]按鈕    QPushButton * btn2 = new QPushButton("觸發(fā)信號(hào)",this);    btn2->setParent(this);    btn2->move(100,100);    btn2->resize(100,50);    // 設(shè)置主窗體常用屬性    this->resize(500,400);            // 重置窗口大小,調(diào)整主窗口大小    this->setWindowTitle("我的窗體");  // 重置主窗體的名字    this->setFixedSize(1024,300);     // 固定窗體大小(不讓其修改)    // this->showFullScreen();        // 設(shè)置窗體全屏顯示    // 設(shè)置主窗體特殊屬性    // setWindowFlags(Qt::FramelessWindowHint | Qt::WindowStaysOnTopHint); // 隱藏標(biāo)題欄    // 為按鈕綁定事件 connect(信號(hào)的發(fā)送者,發(fā)送的信號(hào),信號(hào)的接受者,處理的函數(shù)(槽函數(shù)))    connect(btn,&QPushButton::clicked,this,&QWidget::close);    // 將窗體中的 [觸發(fā)信號(hào)] 按鈕,連接到Print函數(shù)中.    connect(btn2,&QPushButton::clicked,this,&Print);}// By : LyShark// https://www.cnblogs.com/lysharkMainWindow::~MainWindow(){    delete ui;}


LineEdit 單行輸入組件: 單行輸入框LineEdit()組件用來(lái)輸入一行文本內(nèi)容,GroupBox()組件用來(lái)實(shí)現(xiàn)分組,QString類是String類的二次封裝版,通過(guò)兩者配合實(shí)現(xiàn)兩個(gè)簡(jiǎn)單的數(shù)值轉(zhuǎn)換器。

#include "mainwindow.h"#include "ui_mainwindow.h"#include #include #include MainWindow::MainWindow(QWidget *parent): QMainWindow(parent), ui(new Ui::MainWindow){    ui->setupUi(this);    // 設(shè)置計(jì)算和編輯框不可修改    ui->NumberSum->setEnabled(false);    ui->lineEdit_hex->setEnabled(false);    ui->lineEdit_bin->setEnabled(false);    // 設(shè)置為密碼輸入    ui->NumberSum->setEchoMode(QLineEdit::Password);}MainWindow::~MainWindow(){    delete ui;}// By : LyShark// https://www.cnblogs.com/lyshark// 當(dāng)點(diǎn)擊計(jì)算按鈕后完成計(jì)算void MainWindow::on_pushButton_clicked(){    // 得到兩個(gè)編輯框的數(shù)據(jù)    QString string_total;    QString Number_One = ui->numberA->text();    QString Number_Two = ui->NumberB->text();    if(Number_One.length() == 0 || Number_Two.length() == 0)    {        ui->label_3->setText("參數(shù)不能為空");    }    else    {        // 類型轉(zhuǎn)換并賦值        int number_int = Number_One.toInt();        float number_float = Number_Two.toFloat();        // 計(jì)算結(jié)果并放入到第三個(gè)編輯框中        float total = number_int * number_float;        string_total = string_total.sprintf("%.2f",total);        ui->NumberSum->setText(string_total);    }}// 當(dāng)點(diǎn)擊進(jìn)制轉(zhuǎn)換按鈕后觸發(fā)事件void MainWindow::on_pushButton_2_clicked(){    QString str = ui->lineEdit->text();    int value = str.toUInt();    // 轉(zhuǎn)十六進(jìn)制    str = str.setNum(value,16);     // 轉(zhuǎn)為16進(jìn)制    str = str.toUpper();            // 變?yōu)榇髮?   ui->lineEdit_hex->setText(str); // 設(shè)置hex編輯框    // 轉(zhuǎn)二進(jìn)制    str = str.setNum(value,2);        // 第一種方式轉(zhuǎn)換    str = QString::number(value,2);   // 第二種方式轉(zhuǎn)換    ui->lineEdit_bin->setText(str);   // 設(shè)置bin編輯框}

如上我們學(xué)習(xí)總結(jié)了按鈕組件與編輯框組件的使用,這兩個(gè)組件組合起來(lái)可實(shí)現(xiàn)一個(gè)簡(jiǎn)單地頁(yè)面登錄驗(yàn)證界面,代碼如下:

#include "mainwindow.h"#include "ui_mainwindow.h"#include #include #include #include QString m_user="admin";   // 初始化用戶名QString m_pswd="12345";   // 初始化密碼int m_tryCount=0;         // 試錯(cuò)次數(shù)// 字符串MD5算法加密QString MainWindow::encrypt(const QString &str){    QByteArray btArray;    btArray.append(str);                               // 加入原始字符串    QCryptographicHash hash(QCryptographicHash::Md5);  // Md5加密算法    hash.addData(btArray);                             // 添加數(shù)據(jù)到加密哈希值    QByteArray resultArray =hash.result();             // 返回最終的哈希值    QString md5 =resultArray.toHex();                  // 轉(zhuǎn)換為16進(jìn)制字符串    return  md5;}// 讀取用戶名密碼void MainWindow::ReadString(){    QString organization="UserDataBase";           // 注冊(cè)表    QString appName="onley";                       // HKEY_CURRENT_USER/Software/UserDataBase/onley    QSettings settings(organization,appName);      // 創(chuàng)建key-value    bool saved=settings.value("saved",false).toBool();       // 讀取 saved鍵的值    m_user=settings.value("Username", "admin").toString();   // 讀取 Username 鍵的值,缺省為admin    QString defaultPSWD=encrypt("12345");                    // 缺省密碼 12345 加密后的數(shù)據(jù)    m_pswd=settings.value("PSWD",defaultPSWD).toString();    // 讀取PSWD鍵的值    if (saved)    {        ui->lineEdit_Username->setText(m_user);    }    ui->checkBox->setChecked(saved);}// 保存用戶名密碼設(shè)置void MainWindow::WriteString(){    QSettings settings("UserDataBase","onley"); // 注冊(cè)表鍵組    settings.setValue("Username",m_user);       // 用戶名    settings.setValue("PSWD",m_pswd);           // 經(jīng)過(guò)加密的密碼    settings.setValue("saved",ui->checkBox->isChecked());}// By : LyShark// https://www.cnblogs.com/lysharkMainWindow::MainWindow(QWidget *parent) :QMainWindow(parent),ui(new Ui::MainWindow){    ui->setupUi(this);    setFixedSize(this->width(), this->height());             // 窗口不可調(diào)節(jié)    ui->lineEdit_Password->setEchoMode(QLineEdit::Password); // 密碼輸入    ReadString();}MainWindow::~MainWindow(){    delete ui;}// loginvoid MainWindow::on_pushButton_clicked(){    QString user=ui->lineEdit_Username->text().trimmed();//輸入用戶名    QString pswd=ui->lineEdit_Password->text().trimmed(); //輸入密碼    QString encrptPSWD=encrypt(pswd); //對(duì)輸入密碼進(jìn)行加密    if ((user==m_user)&&(encrptPSWD==m_pswd)) //如果用戶名和密碼正確    {        WriteString();        QMessageBox::critical(this,"成功","已登錄");    }    else    {        m_tryCount++; //錯(cuò)誤次數(shù)        if (m_tryCount>3)        {            QMessageBox::critical(this, "錯(cuò)誤", "輸入錯(cuò)誤次數(shù)太多,強(qiáng)行退出");            this->close();        }        else        {            QMessageBox::warning(this, "錯(cuò)誤提示", "用戶名或密碼錯(cuò)誤");        }    }}


SpinBox 數(shù)值組件: 該控件主要用于整數(shù)或浮點(diǎn)數(shù)的計(jì)數(shù)顯示,與普通的LineEdit不同,該組件可以在前后增加特殊符號(hào)并提供了上下幅度的調(diào)整按鈕,靈活性更強(qiáng)。

該組件有兩個(gè)版本,SpinBox()用于顯示整數(shù)與單精度浮點(diǎn)數(shù),DoubleSpinBox()則是雙精度浮點(diǎn)數(shù),SpinBox有兩個(gè)特殊參數(shù),prefix參數(shù)是在前方加入特殊符號(hào),而suffix則是在后方加入特殊符號(hào)。

#include "mainwindow.h"#include "ui_mainwindow.h"#include #include #include MainWindow::MainWindow(QWidget *parent): QMainWindow(parent), ui(new Ui::MainWindow){    ui->setupUi(this);    ui->doubleSpinBox->setEnabled(false);}MainWindow::~MainWindow(){    delete ui;}// By : LyShark// https://www.cnblogs.com/lyshark// 實(shí)現(xiàn)精度計(jì)算功能void MainWindow::on_pushButton_3_clicked(){    int x = ui->spinBox->value();    int y = ui->spinBox_2->value();    double total = x+y;    ui->doubleSpinBox->setValue(total);   // 設(shè)置SpinBox數(shù)值(設(shè)置時(shí)無(wú)需轉(zhuǎn)換)    QString label_value = ui->label_10->text();  // 獲取字符串    ui->label_10->setNum(total);                 // 設(shè)置label標(biāo)簽為數(shù)字}

我們繼續(xù)在SpinBox的基礎(chǔ)上改進(jìn),如上代碼中每次都需要點(diǎn)擊計(jì)算按鈕才能出結(jié)果,此時(shí)我們需求是實(shí)現(xiàn)當(dāng)SpinBox中的參數(shù)發(fā)生變化時(shí)自定的完成計(jì)算,這里就需要用到信號(hào)和槽了,當(dāng)SpinBox被修改后,自動(dòng)觸發(fā)計(jì)算信號(hào)實(shí)現(xiàn)計(jì)算。

#include "mainwindow.h"#include "ui_mainwindow.h"#include #include #include MainWindow::MainWindow(QWidget *parent): QMainWindow(parent), ui(new Ui::MainWindow){    ui->setupUi(this);    ui->doubleSpinBox->setEnabled(false);    // 將數(shù)量和單價(jià)兩個(gè)SpinBox的valueChanged()信號(hào)與on_pushButton_clicked()槽關(guān)聯(lián)    // 只要spinBox中的內(nèi)容發(fā)生變化,則立即觸發(fā)按鈕完成計(jì)算    QObject::connect(ui->spinBox,SIGNAL(valueChanged(int)),this,SLOT(on_pushButton_clicked()));    QObject::connect(ui->spinBox_2,SIGNAL(valueChanged(int)),this,SLOT(on_pushButton_clicked()));    QObject::connect(ui->doubleSpinBox,SIGNAL(valueChanged(double)),this,SLOT(on_pushButton_clicked()));}// By : LyShark// https://www.cnblogs.com/lysharkMainWindow::~MainWindow(){    delete ui;}// 實(shí)現(xiàn)精度計(jì)算功能void MainWindow::on_pushButton_clicked(){    int x = ui->spinBox->value();    int y = ui->spinBox_2->value();    double total = x+y;    ui->doubleSpinBox->setValue(total);   // 設(shè)置SpinBox數(shù)值(設(shè)置時(shí)無(wú)需轉(zhuǎn)換)    QString label_value = ui->label_10->text();  // 獲取字符串    ui->label_10->setNum(total);                 // 設(shè)置label標(biāo)簽為數(shù)字}


HorizontalSlider 滑塊條組件: 根據(jù)上面的SpinBox信號(hào)與槽函數(shù)的綁定,我們還可以將其綁定到滑塊條組件上,如下代碼實(shí)現(xiàn)了,當(dāng)用戶改變滑塊條時(shí),右側(cè)的textEdit的顏色也會(huì)發(fā)生相應(yīng)的改變。

#include "mainwindow.h"#include "ui_mainwindow.h"#include #include #include MainWindow::MainWindow(QWidget *parent): QMainWindow(parent), ui(new Ui::MainWindow){    ui->setupUi(this);    // ----------------------------------------------------------------------------------    // 將 SliderGreen,SliderBlue,SliderAlpha 與第一個(gè)滑塊條 SliderRead 關(guān)聯(lián)起來(lái)    // 實(shí)現(xiàn)效果為,當(dāng)其他三個(gè)選擇條數(shù)值改變時(shí),同樣會(huì)觸發(fā)on_SliderRed_valueChanged槽函數(shù)    QObject::connect(ui->SliderRed,SIGNAL(valueChanged(int)),this,SLOT(on_SliderRed_valueChanged(int)));    QObject::connect(ui->SliderGreen,SIGNAL(valueChanged(int)),this,SLOT(on_SliderRed_valueChanged(int)));    QObject::connect(ui->SliderBlue,SIGNAL(valueChanged(int)),this,SLOT(on_SliderRed_valueChanged(int)));    QObject::connect(ui->SliderAlpha,SIGNAL(valueChanged(int)),this,SLOT(on_SliderRed_valueChanged(int)));}MainWindow::~MainWindow(){    delete ui;}// By : LyShark// https://www.cnblogs.com/lyshark// 當(dāng)拖動(dòng)SliderRed滑塊條時(shí)設(shè)置TextEdit底色void MainWindow::on_SliderRed_valueChanged(int value){    Q_UNUSED(value);    QColor  color;    int R=ui->SliderRed->value();      // 讀取SliderRed的當(dāng)前值    int G=ui->SliderGreen->value();    // 讀取 SliderGreen 的當(dāng)前值    int B=ui->SliderBlue->value();     // 讀取 SliderBlue 的當(dāng)前值    int alpha=ui->SliderAlpha->value();// 讀取 SliderAlpha 的當(dāng)前值    color.setRgb(R,G,B,alpha);         // 使用QColor的setRgb()函數(shù)獲得顏色    QPalette pal=ui->textEdit->palette(); // 獲取textEdit原有的 palette    pal.setColor(QPalette::Base,color);   // 設(shè)置palette的基色(即背景色)    ui->textEdit->setPalette(pal);        // 設(shè)置為textEdit的palette,改變textEdit的底色}


數(shù)碼表與LCD屏幕: 這是兩個(gè)比較有趣的組件,如下布局中圓形的是dial組件,其右側(cè)則是一個(gè)LCD Number組件,兩者可以靈活的結(jié)合在一起使用,當(dāng)撥動(dòng)齒輪時(shí)自動(dòng)影響LCD數(shù)碼屏幕的顯示。

#include "mainwindow.h"#include "ui_mainwindow.h"#include #include #include #include MainWindow::MainWindow(QWidget *parent): QMainWindow(parent), ui(new Ui::MainWindow){    ui->setupUi(this);}// By : LyShark// https://www.cnblogs.com/lysharkMainWindow::~MainWindow(){    delete ui;}// 當(dāng)圓形選擇框數(shù)值改變時(shí)設(shè)置數(shù)碼表顯示void MainWindow::on_dial_valueChanged(int value){   ui->LCDDisplay->display(value);}// 選中時(shí)設(shè)置為十進(jìn)制顯示void MainWindow::on_radioBtnDec_clicked(){    ui->LCDDisplay->setDigitCount(3);   // 設(shè)置位數(shù)    ui->LCDDisplay->setDecMode();       // 十進(jìn)制}// 選中設(shè)置為二進(jìn)制顯示void MainWindow::on_radioBtnBin_clicked(){    ui->LCDDisplay->setDigitCount(8);    ui->LCDDisplay->setBinMode();}// 選中設(shè)置為八進(jìn)制顯示void MainWindow::on_radioBtnOct_clicked(){    ui->LCDDisplay->setDigitCount(5);    ui->LCDDisplay->setOctMode();}// 選中設(shè)置為十六進(jìn)制顯示void MainWindow::on_radioBtnHex_clicked(){    ui->LCDDisplay->setDigitCount(3);    ui->LCDDisplay->setHexMode();}


CheckBox 多選框: 多選框CheckBox組件也是最常用的組件,多選框支持三態(tài)選擇,選中半選中和未選中狀態(tài)。

#include "mainwindow.h"#include "ui_mainwindow.h"http:// By : LyShark// https://www.cnblogs.com/lysharkMainWindow::MainWindow(QWidget *parent) :QMainWindow(parent),ui(new Ui::MainWindow){    ui->setupUi(this);    ui->checkBox->setTristate();       // 啟用三態(tài)選擇框    ui->checkBox->setEnabled(true);    // 設(shè)置為可選狀態(tài)}MainWindow::~MainWindow(){    delete ui;}// 三態(tài)選擇框狀態(tài)void MainWindow::on_checkBox_stateChanged(int state){    // 選中狀態(tài)    if (state == Qt::Checked)    {       ui->checkBox->setText("選中");    }    // 半選狀態(tài)    else if(state == Qt::PartiallyChecked)    {       ui->checkBox->setText("半選");    }    // 未選中    else    {       ui->checkBox->setText("未選中");    }}// 設(shè)置取消選中void MainWindow::on_pushButton_clicked(){    int check = ui->checkBox->isCheckable();    if(check == 1)    {        ui->checkBox->setChecked(false);    }}// 關(guān)聯(lián)式多選框void MainWindow::on_checkBox_master_stateChanged(int state){    // 選中所有子框    if(state == Qt::Checked)    {        ui->checkBox_sub_a->setChecked(true);        ui->checkBox_sub_b->setChecked(true);    }    // 取消子框全選狀態(tài)    if(state == Qt::Unchecked)    {        ui->checkBox_sub_a->setChecked(false);        ui->checkBox_sub_b->setChecked(false);    }}


ComBox 下拉框組件: 該組件提供了下拉列表供用戶選擇,ComBox組件除了可以顯示下拉列表外,每個(gè)項(xiàng)還可以關(guān)聯(lián)一個(gè)QVariant類型的變量用于存儲(chǔ)不可見數(shù)據(jù)。

#include "mainwindow.h"#include "ui_mainwindow.h"#include #include #include // 定義為全局變量QMap City_Zone;QMap> map;QList tmp;// By : LyShark// https://www.cnblogs.com/lysharkMainWindow::MainWindow(QWidget *parent) :QMainWindow(parent),ui(new Ui::MainWindow){    ui->setupUi(this);    // -----------------------------------------------------------------    // 循環(huán)方式添加元素    ui->comboBox_main->clear();    QIcon icon;    icon.addFile(":/image/1.ico");    for(int x=0;x<10;x++)    {        ui->comboBox_main->addItem(icon,QString::asprintf("元素_%d",x));    }    // -----------------------------------------------------------------    // 批量添加combox元素    ui->comboBox_main->clear();    QStringList str;    str << "北京" << "上海" << "廣州";    ui->comboBox_main->addItems(str);    ui->comboBox_main->setItemIcon(0,QIcon(":/image/1.ico"));    ui->comboBox_main->setItemIcon(1,QIcon(":/image/2.ico"));    ui->comboBox_main->setItemIcon(2,QIcon(":/image/3.ico"));    // -----------------------------------------------------------------    // 實(shí)現(xiàn)combox聯(lián)動(dòng)效果    ui->comboBox_main->clear();    City_Zone.insert("請(qǐng)選擇",0);    City_Zone.insert("北京",1);    City_Zone.insert("上海",2);    City_Zone.insert("廣州",3);    // 循環(huán)填充一級(jí)菜單    ui->comboBox_main->clear();    foreach(const QString &str,City_Zone.keys())    {        ui->comboBox_main->addItem(QIcon(":/image/1.ico"),str,City_Zone.value(str));    }    // -----------------------------------------------------------------    // 插入二級(jí)菜單    tmp.clear();    tmp << "大興區(qū)" << "昌平區(qū)" << "東城區(qū)";    map["北京"] = tmp;    tmp.clear();    tmp << "黃浦區(qū)" << "徐匯區(qū)" << "長(zhǎng)寧區(qū)" << "楊浦區(qū)";    map["上海"] = tmp;    tmp.clear();    tmp << "荔灣區(qū)" << "越秀區(qū)";    map["廣州"] = tmp;    // 設(shè)置默認(rèn)選擇第三個(gè)    ui->comboBox_main->setCurrentIndex(3);}MainWindow::~MainWindow(){    delete ui;}// 獲取當(dāng)前選中的兩級(jí)菜單內(nèi)容void MainWindow::on_pushButton_clicked(){    QString one = ui->comboBox_main->currentText();    QString two = ui->comboBox_submain->currentText();    std::cout << one.toStdString().data() << " | " << two.toStdString().data() << std::endl;}// 當(dāng)主ComBox被選擇時(shí),自動(dòng)的填充第2個(gè)ComBox中的數(shù)據(jù).void MainWindow::on_comboBox_main_currentTextChanged(const QString &arg1){    ui->comboBox_submain->clear();    QList qtmp;    qtmp = map.value(arg1);    for(int x=0;xcomboBox_submain->addItem(QIcon(":/image/2.ico"),qtmp[x]);    }}


ProgressBar 進(jìn)度條與定時(shí)器: 進(jìn)度條ProgressBar組件通常會(huì)結(jié)合QTimer定時(shí)器組件共同使用,首先我們需要設(shè)置一個(gè)時(shí)鐘周期,定時(shí)器每經(jīng)過(guò)一定的時(shí)間周期則執(zhí)行對(duì)變量或進(jìn)度條的遞增操作,由此實(shí)現(xiàn)進(jìn)度條動(dòng)態(tài)輸出效果。

#include "mainwindow.h"#include "ui_mainwindow.h"#include QTimer *my_timer;// By : LyShark// https://www.cnblogs.com/lysharkMainWindow::MainWindow(QWidget *parent): QMainWindow(parent), ui(new Ui::MainWindow){    ui->setupUi(this);    // 初始化進(jìn)度條數(shù)值    ui->progressBar->setValue(0);    ui->progressBar_2->setValue(100);    // 聲明定時(shí)器    my_timer = new QTimer(this);    // 綁定一個(gè)匿名函數(shù)    connect(my_timer,&QTimer::timeout,[=]{        static int x = 0;        // 判斷是否到達(dá)了進(jìn)度條的最大值        if(x != 100)        {            x++;            ui->progressBar->setValue(x);            ui->progressBar_2->setValue(int(100-x));        }        else        {            x=0;            my_timer->stop();        }    });}MainWindow::~MainWindow(){    delete ui;}// 啟動(dòng)定時(shí)器,并設(shè)置周期為100毫秒void MainWindow::on_pushButton_clicked(){    if(my_timer->isActive() == false)    {        my_timer->start(100);    }}// 停止定時(shí)器void MainWindow::on_pushButton_2_clicked(){    if(my_timer->isActive() == true)    {        my_timer->stop();    }}// 將進(jìn)度條置空void MainWindow::on_pushButton_3_clicked(){    ui->progressBar->setValue(0);    ui->progressBar_2->setValue(100);}


DateTime 日期與時(shí)間組件: 時(shí)間組件中包括了可以顯示時(shí)間的QTime顯示日期的QDate以及可同時(shí)顯示時(shí)間與日期的QDateTime這三種組件,三種組件的使用上幾乎一致,如下代碼是開發(fā)中最常用的總結(jié)。

#include "mainwindow.h"#include "ui_mainwindow.h"#include // By : LyShark// https://www.cnblogs.com/lysharkMainWindow::MainWindow(QWidget *parent): QMainWindow(parent), ui(new Ui::MainWindow){    ui->setupUi(this);}// By : LyShark// https://www.cnblogs.com/lysharkMainWindow::~MainWindow(){    delete ui;}// 獲取當(dāng)前日期時(shí)間,并初始化到組件中void MainWindow::on_pushButton_clicked(){     QDateTime curDateTime = QDateTime::currentDateTime();     ui->timeEdit->setTime(curDateTime.time());     ui->dateEdit->setDate(curDateTime.date());     ui->dateTimeEdit->setDateTime(curDateTime);     ui->lineEdit->setText(curDateTime.toString("yyyy-MM-dd hh:mm:ss"));}// 將字符串時(shí)間日期轉(zhuǎn)換到時(shí)間日期組件中void MainWindow::on_pushButton_2_clicked(){    QString str = ui->lineEdit_2->text();    str = str.trimmed();    if(!str.isEmpty())    {        QDateTime datetime = QDateTime::fromString(str,"yyyy-MM-dd hh:mm:ss");        ui->dateTimeEdit_string_to_datetime->setDateTime(datetime);    }}


PlainTextEdit 多行文本框: 多行文本編輯器,用于顯示和編輯多行簡(jiǎn)單文本,如下代碼左側(cè)PlainTextEdit中輸入數(shù)據(jù)(每行換行)點(diǎn)擊按鈕后自動(dòng)將左側(cè)數(shù)據(jù)放入右側(cè)的listView組件中。

#include "mainwindow.h"#include "ui_mainwindow.h"#include #include #include #include // By : LyShark// https://www.cnblogs.com/lysharkMainWindow::MainWindow(QWidget *parent): QMainWindow(parent), ui(new Ui::MainWindow){    ui->setupUi(this);    // 狀態(tài)欄的創(chuàng)建    QStatusBar * stBar = statusBar();    setStatusBar(stBar);    QLabel * label = new QLabel("左側(cè)提示信息",this);    stBar->addWidget(label);    QLabel * label2 = new QLabel("右側(cè)提示信息",this);    stBar->addPermanentWidget(label2);}MainWindow::~MainWindow(){    delete ui;}// 點(diǎn)擊按鈕實(shí)現(xiàn)將 plainTextEdit 里面的數(shù)據(jù)逐行放入到右側(cè)void MainWindow::on_pushButton_clicked(){    QTextDocument* doc = ui->plainTextEdit->document ();  // 文本對(duì)象    int count = doc->blockCount();                        // 定義回車為分隔符    // 定義data,model用于存儲(chǔ)每個(gè)文本    QStringList data;    QStringListModel *model;    for(int x=0;x< count;x++)    {        QTextBlock textLine = doc->findBlockByNumber(x); // 每次取出plainTextEdit中的一行        QString str = textLine.text();        data << str;                                     // 放入鏈表中    }    // 顯示到ListView中    model = new QStringListModel(data);    ui->listView->setModel(model);}


RadioButton 單選框分組: 單選框是最常用的組件,在一個(gè)界面中可以有多種單選框,每種單選框都會(huì)對(duì)應(yīng)一個(gè)問題,此實(shí)我們需要使用ButtonGroup組件對(duì)單選框進(jìn)行分組,并通過(guò)信號(hào)和槽函數(shù)相互綁定,從而實(shí)現(xiàn)對(duì)用戶的多種選擇進(jìn)行判斷。

#include "mainwindow.h"#include "ui_mainwindow.h"#include #include QButtonGroup *group_sex;QButtonGroup *group_hobby;// By : LyShark// https://www.cnblogs.com/lysharkMainWindow::MainWindow(QWidget *parent): QMainWindow(parent), ui(new Ui::MainWindow){    ui->setupUi(this);    // 將不同的RadioButton放入不同的ButtonGroup組中    group_sex = new QButtonGroup(this);    group_sex->addButton(ui->radioButton_male,0);    group_sex->addButton(ui->radioButton_female,1);    group_sex->addButton(ui->radioButton_unknown,2);    ui->radioButton_unknown->setChecked(true);    group_hobby = new QButtonGroup(this);    group_hobby->addButton(ui->radioButton_eat,3);    group_hobby->addButton(ui->radioButton_drink,4);    group_hobby->addButton(ui->radioButton_sleep,5);    ui->radioButton_eat->setChecked(true);    // 綁定信號(hào)和槽    connect(ui->radioButton_male,SIGNAL(clicked(bool)),this,SLOT(MySlots()));    connect(ui->radioButton_female,SIGNAL(clicked(bool)),this,SLOT(MySlots()));    connect(ui->radioButton_unknown,SIGNAL(clicked(bool)),this,SLOT(MySlots()));}MainWindow::~MainWindow(){    delete ui;}// 手動(dòng)創(chuàng)建一個(gè)槽函數(shù),此處的槽函數(shù)聲明需要加入到頭文件private slots中void MainWindow::MySlots(){    switch(group_sex->checkedId())    {    case 0:        std::cout << "male" << std::endl;        break;    case 1:        std::cout << "female" << std::endl;        break;    case 2:        std::cout << "unknown" << std::endl;        break;    }}


版權(quán)聲明: 本博客文章與代碼均為學(xué)習(xí)時(shí)整理的筆記,博客中除去明確標(biāo)注有參考文獻(xiàn)的文章,其他文章 均為原創(chuàng) 作品,轉(zhuǎn)載請(qǐng)務(wù)必 添加出處 ,您添加出處是我創(chuàng)作的動(dòng)力!

博主警告:如果您惡意轉(zhuǎn)載本人文章,則您的整站文章,將會(huì)變?yōu)槲业脑瓌?chuàng)作品,請(qǐng)相互尊重!

文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請(qǐng)注明本文地址:http://specialneedsforspecialkids.com/yun/124542.html

相關(guān)文章

  • 13 萬(wàn)字 C 語(yǔ)言從入門到精通保姆級(jí)教程2021 年版 (建議收藏)

    摘要:友情提示先關(guān)注收藏,再查看,萬(wàn)字保姆級(jí)語(yǔ)言從入門到精通教程。及大牛出天地開始有隨之乃有萬(wàn)種語(yǔ)年英國(guó)劍橋大學(xué)推出了語(yǔ)言。 友情提示:先關(guān)注收藏,再查看,13 萬(wàn)字保...

    zombieda 評(píng)論0 收藏0
  • Freecad的Python腳本

    摘要:在控制臺(tái)中,您可以逐個(gè)編寫命令,這些命令在按下時(shí)執(zhí)行宏可以包含由多行組成的更復(fù)雜的腳本,只有在執(zhí)行宏時(shí)才會(huì)執(zhí)行。更好的是,您可以在中設(shè)置一個(gè)選項(xiàng),以在控制臺(tái)中顯示腳本命令。 Python是一種編程語(yǔ)言,使用起來(lái)非常簡(jiǎn)單,學(xué)習(xí)起來(lái)非???。它是開源的,多平臺(tái)的,可以單獨(dú)用于各種各樣的事情,從簡(jiǎn)單的shell腳本編程到非常復(fù)雜的程序。但其最廣泛的用途之一是作為腳本語(yǔ)言,因?yàn)樗苋菀浊度氲狡渌?..

    zengdongbao 評(píng)論0 收藏0
  • Windows環(huán)境下C/C++訪問PostgreSQL數(shù)據(jù)庫(kù)

    摘要:網(wǎng)上關(guān)于環(huán)境下訪問數(shù)據(jù)庫(kù)的資料很少,文本分析了訪問數(shù)據(jù)庫(kù)的過(guò)程。環(huán)境訪問主要有兩種方式利用封裝的數(shù)據(jù)庫(kù)訪問組件利用的函數(shù)。使用平臺(tái)訪問的局限性很大,一旦脫離了訪問組件,數(shù)據(jù)庫(kù)就無(wú)法操作。連接數(shù)據(jù)庫(kù)數(shù)據(jù)庫(kù)連接函數(shù)返回值指針,即連接指針。 PostgreSQL是一款在Linux環(huán)境下應(yīng)用十分廣泛的輕量級(jí)關(guān)系型數(shù)據(jù)庫(kù),大家都聽說(shuō)過(guò)MySQL,卻對(duì)PostgreSQL鮮有耳聞,它其實(shí)在性...

    feng409 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

最新活動(dòng)
閱讀需要支付1元查看
<