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

QT中大部分部件如何使用舉例詳解

 更新時(shí)間:2022年06月26日 12:18:42   作者:紅客白帽  
QWidget類是所有用戶界面對(duì)象的基類,被稱為基礎(chǔ)窗口部件,下面這篇文章主要給大家介紹了關(guān)于QT中大部分部件如何使用的相關(guān)資料,需要的朋友可以參考下

內(nèi)容繁多,直接上代碼

重點(diǎn)請(qǐng)看mainwindow.cpp的中代碼和ui如何設(shè)計(jì)的

【1】main.cpp

#include "mainwindow.h"
#include <QApplication>

int main(int argc, char *argv[])
{
    QApplication a(argc, argv);
    MainWindow w;
    w.show();
    return a.exec();
}

【2】mainwindow.h

#ifndef MAINWINDOW_H
#define MAINWINDOW_H
#include<QPushButton>
#include <QMainWindow>
#include <QTextCodec>//解決字符編碼亂碼問(wèn)題
#include<QTextEdit>
#include <QSlider>//滑動(dòng)桿
QT_BEGIN_NAMESPACE
namespace Ui { class MainWindow; }
QT_END_NAMESPACE

class MainWindow : public QMainWindow
{
    Q_OBJECT

public:
    MainWindow(QWidget *parent = nullptr);
    ~MainWindow();

public slots:

private slots:
    void    textbutton_1();
    void on_PBT_clicked();
    void on_PBJ_clicked();
    void on_PBL_clicked();
    void on_pushButton_8_clicked();
    void on_pushButton_9_clicked();
    void on_pushButton_11_clicked();
    void on_pushButton_13_clicked();
    void on_pushButton_12_clicked();
    void on_pushButton_10_clicked();
    void display(int);
    void on_horizontalScrollBar_valueChanged(int value);
    void on_verticalScrollBar_valueChanged(int value);
    void on_horizontalSlider_valueChanged(int value);
    void on_verticalSlider_valueChanged(int value);
    void on_calendarWidget_clicked(const QDate &date);
    void on_pushButton_15_clicked();
    void on_pushButton_14_clicked();
    void on_pushButton_17_clicked();

private:
    Ui::MainWindow *ui;
    QTextCodec *codec;
    QString filename;

    QPushButton* bt_filename;
    QPushButton* bt_getcolor;
    QPushButton* bt_getfont;
    QPushButton* bt_getinput;
    QPushButton* bt_error;
    QPushButton* bt_message;
    QPushButton* bt_progress;
    QTextEdit *te_test;

    QPushButton *p1;
    QScrollBar *sb;

};
#endif // MAINWINDOW_H

【3】mainwindow.cpp

#include "mainwindow.h"
#include "ui_mainwindow.h"
#include<QString>
#include<QProgressBar>//進(jìn)度條頭文件
#include<QDebug>//控制臺(tái)輸出
//==========================布局管理器
#include<QVBoxLayout>//水平
#include<QHBoxLayout>//垂直
#include<QGridLayout>//網(wǎng)格
//==========================各大對(duì)話框類
#include<QColorDialog>
#include<QFileDialog>
#include<QInputDialog>
#include<QErrorMessage>
#include <QProgressDialog>
#include <QFontDialog>
#include<QFileDialog>
#include<QMessageBox>
//文件讀寫(xiě)
#include <QFile>
//行編輯
#include<QLineEdit>
//滾動(dòng)條
#include<QScrollBar>

//標(biāo)簽顯示動(dòng)畫(huà)
#include<QMovie>
MainWindow::MainWindow(QWidget *parent)
    : QMainWindow(parent)
    , ui(new Ui::MainWindow)
{
    ui->setupUi(this);

    ui->progressBar->setValue(0);
    codec = QTextCodec::codecForName("gbk");//設(shè)置字符編碼
    codec->setCodecForLocale(codec);
    setWindowTitle(codec->toUnicode("UI學(xué)習(xí)筆記"));

    ui->stackedWidget->setCurrentIndex(0);//顯示當(dāng)前索引,第一頁(yè)
    //文件對(duì)話框
    connect(ui->pushButton_2,&QPushButton::clicked,[&]{QString filename =
    QFileDialog::getOpenFileName();ui->textEdit_3->append(filename);});

    //顏色對(duì)話框
       connect(ui->pushButton_3, &QPushButton::clicked, [&](){
           QColor color = QColorDialog::getColor();
           ui->textEdit_3->setTextColor(color);
       });

    //字體對(duì)話框
       bool ok;
       connect(ui->pushButton_4,&QPushButton::clicked,[&](){QFont font = QFontDialog::getFont(&ok);
           if(ok)
          {
               ui->textEdit_3->setCurrentFont(font);
           }
       });

       //輸入對(duì)話框
       connect(ui->pushButton_5, &QPushButton::clicked, [&](){
           QString str = QInputDialog::getText(this, "Title", "input");
           ui->textEdit_3->append(str);
       });
        //信息對(duì)話框
       connect(ui->pushButton_6,&QPushButton::clicked,[&](){
        int ret = QMessageBox::information(this,"Title","you yyds",QMessageBox::Ok,QMessageBox::Apply,QMessageBox::Close);
        if(ret ==QMessageBox::Ok)
        {
            ui->textEdit_3->append("111111111111111111111111");
        }
       });
    //錯(cuò)誤對(duì)話框
       connect(ui->pushButton_7, &QPushButton::clicked, [&](){
           QErrorMessage *error= new QErrorMessage;
           error->showMessage("error  error  error");
       });


}

MainWindow::~MainWindow()
{
    delete ui;

}

//瀏覽按鈕
void MainWindow::on_PBL_clicked()
{
    filename = QFileDialog::getOpenFileName();//文件對(duì)話框
    ui->lineEdit->setText(filename);
}

//加密按鈕
void MainWindow::on_PBJ_clicked()
{
    //讀寫(xiě)文件打開(kāi)
    QFile f(filename);
    if(!f.open(QIODevice::ReadWrite))
        return;
    //讀取全部?jī)?nèi)容
    QByteArray buf = f.readAll();
    ui->textEdit->append(codec->toUnicode(buf));//加密前
    ui->progressBar->setRange(0,buf.length()-1);

    for(int i=0; i<buf.length();i++)
    {
        buf[i]=~buf[i];
        ui->progressBar->setValue(i);//進(jìn)度條
    }
    ui->textEdit_2->append(codec->toUnicode(buf));//加密后
    //回寫(xiě)
    f.seek(0);
    f.write(buf);
    //關(guān)閉
    f.close();
}
//下一頁(yè)
void MainWindow::on_PBT_clicked()
{
    ui->stackedWidget->setCurrentIndex(1);
}

//上一頁(yè):
void MainWindow::on_pushButton_8_clicked()
{
    ui->stackedWidget->setCurrentIndex(0);
}

//下一頁(yè)
void MainWindow::on_pushButton_9_clicked()
{
    ui->pushButton->setIconSize(QSize(80,80));//設(shè)置按鈕圖標(biāo)大小
    //ui->pushButton->setFlat(true);//設(shè)置無(wú)邊框
    ui->pushButton->setIcon(QIcon("C:/Users/SuJieYin/Pictures/Saved Pictures/1.png"));
    ui->pushButton->show();

    ui->toolButton->setIconSize(QSize(50,50));
    //ui->toolButton->setIcon(QIcon("C:/Users/SuJieYin/Pictures/Saved Pictures/1.png"));
    ui->toolButton->setToolTip("Tip");//選中按鈕時(shí),會(huì)有提示文字
    ui->toolButton->setText("toolbutton");
    ui->toolButton->show();
    //綁定快捷鍵
    ui->toolButton->setShortcut(QKeySequence(Qt::CTRL+Qt::Key_W));
    connect(ui->toolButton,SIGNAL(clicked(bool)),this,SLOT(textbutton_1()));

    //RadioButton_2設(shè)置圖標(biāo)
    ui->radioButton_2->setIcon(QIcon("C:/Users/SuJieYin/Pictures/Saved Pictures/1.png"));
    ui->radioButton_2->click();//選中按鈕
    ui->radioButton_2->setEnabled(true);//設(shè)置使能
    connect(ui->radioButton_2, &QRadioButton::clicked, [&](){//lamda表達(dá)式(無(wú)名函數(shù))
        qDebug()<<"RadioButton_2";
    });
    //CheckBox按鈕
    ui->checkBox_2->setIcon(QIcon("C:/Users/SuJieYin/Pictures/Saved Pictures/1.png"));
    connect(ui->checkBox_2, &QRadioButton::clicked, [&](){//lamda表達(dá)式(無(wú)名函數(shù))
        qDebug()<<"checkBox_2";
    });

     //行編輯框使用舉例
    ui->lineEdit_2->setEchoMode(QLineEdit::Password);//行編輯框輸入隱藏
    //選中檢查框,顯示密碼,
    connect(ui->checkBox_3,&QCheckBox::clicked,[&](bool x){
           ui->lineEdit_2->setEchoMode(x?QLineEdit::Normal:QLineEdit::Password);
    } );

    ui->stackedWidget->setCurrentIndex(2);//顯示這一頁(yè)的所有部件
}

//快捷鍵和單擊按鈕都可以觸發(fā)
void MainWindow::textbutton_1()
{
    qDebug()<<"CTRL+w";
}


//下一頁(yè):實(shí)現(xiàn)輸入小部件類組件
void MainWindow::on_pushButton_13_clicked()
{
    //組合k框
    ui->comboBox->addItem("com1");
    ui->comboBox->addItem("com2");
    //點(diǎn)擊文本后,顯示文本
    connect(ui->comboBox,&QComboBox::currentTextChanged,[&](QString x){
           ui->label_5->setText(x);});

    //字體選擇框
    connect(ui->fontComboBox,&QFontComboBox::currentFontChanged,[&](QFont x){
    ui->label_6->setFont(x);
    ui->label_6->setText("OKKO");
    ui->lineEdit_3->setFont(x);
    ui->textEdit_4->setCurrentFont(x);
    ui->plainTextEdit->setToolTip("123");//設(shè)置提示
    ui->plainTextEdit->appendPlainText("http://");//顯示文本
    });

    //自旋框
    ui->spinBox->setRange(0,10);//設(shè)置取值范圍
    connect(ui->spinBox,SIGNAL(valueChanged(int)),ui->lcdNumber,SLOT(display(int)));
     ui->stackedWidget->setCurrentIndex(3);

     //旋鈕
     connect(ui->dial,SIGNAL(valueChanged(int)),ui->lcdNumber,SLOT(display(int)));

       //滾動(dòng)條
     //sb= new QScrollBar;//沒(méi)有指定窗口,會(huì)自己彈出一個(gè)窗口;
     sb= new QScrollBar(ui->page_4);//只顯示在這頁(yè)【重點(diǎn)】
     sb->setOrientation(Qt::Horizontal);//設(shè)置水平方向
     sb->setGeometry(20,500,100,10);
     sb->show();
     connect(sb,SIGNAL(valueChanged(int)),ui->lcdNumber,SLOT(display(int)));

      ui->stackedWidget->setCurrentIndex(3);
}
//上一頁(yè)
void MainWindow::on_pushButton_12_clicked()
{
  ui->stackedWidget->setCurrentIndex(1);
}

//下一頁(yè)【第5頁(yè)】
void MainWindow::on_pushButton_11_clicked()
{

    ui->label_8->setAlignment(Qt::AlignCenter);//水平居中
    ui->label_8->setScaledContents(true);//設(shè)置標(biāo)簽自動(dòng)縮放上面的圖片
    ui->label_8->setPixmap(QPixmap("C:/Users/SuJieYin/Pictures/Saved Pictures/2.png"));

     ui->label_9->setAlignment(Qt::AlignCenter);//水平居中
     ui->label_9->setFixedSize(200,120);
     QMovie *m = new QMovie("C:/Users/SuJieYin/Pictures/Saved Pictures/1.gif");
     ui->label_9->setMovie(m);//設(shè)置動(dòng)畫(huà)
     ui->label_8->setScaledContents(true);//設(shè)置標(biāo)簽自動(dòng)縮放上面的圖片
    m->start();//開(kāi)啟動(dòng)畫(huà)

    //文本瀏覽框
    ui->textBrowser->setHtml(codec->toUnicode("<!DOCTYPE html>\
                             <html>\
                             <head>\
                             <meta charset=\"utf-8\">\
                             <title>菜鳥(niǎo)教程(runoob.com)</title>\
                             </head>\
                             <body>\
                                 <h1>我的第一個(gè)標(biāo)題</h1>\
                                 <p>我的第一個(gè)段落。</p>\
                             </body>\
                             </html>"));

    //圖形視圖框架
    //日歷
    ui->stackedWidget->setCurrentIndex(4);
}
//上一頁(yè)【第4頁(yè)】
void MainWindow::on_pushButton_10_clicked()
{
    ui->stackedWidget->setCurrentIndex(2);
}

//點(diǎn)擊SpinBox顯示LCDNumber
void MainWindow::display(int i)
{
    ui->lcdNumber->setMinimumHeight(i);//設(shè)置最小行高
}

//水平滑動(dòng)條
void MainWindow::on_horizontalScrollBar_valueChanged(int value)
{
       ui->lcdNumber->display(value);//顯示值
}

//垂直滾動(dòng)條
void MainWindow::on_verticalScrollBar_valueChanged(int value)
{
    ui->verticalScrollBar->setRange(0,100);
    ui->lcdNumber->display(value);//顯示值
}

//水平滑動(dòng)滾動(dòng)條
void MainWindow::on_horizontalSlider_valueChanged(int value)
{
    ui->lcdNumber->display(value);//顯示值
}
//垂直滑動(dòng)滾動(dòng)條
void MainWindow::on_verticalSlider_valueChanged(int value)
{
     ui->lcdNumber->display(value);//顯示值
}
//==================================================

//單擊日歷時(shí)顯示
void MainWindow::on_calendarWidget_clicked(const QDate &date)
{
    ui->textBrowser->setText(date.toString());
}

//上一頁(yè)
void MainWindow::on_pushButton_15_clicked()
{
    qDebug()<<"======================="<<endl;
    ui->stackedWidget->setCurrentIndex(3);
}
//下一頁(yè)
void MainWindow::on_pushButton_14_clicked()
{

    //GroupBox容器
    ui->radioButton->setChecked(true);//設(shè)置檢查
    ui->verticalLayout_2->addStretch(1);//添加伸長(zhǎng)
    ui->groupBox->setLayout(ui->verticalLayout_2);//添加垂直部件

    //ScrollArea滾動(dòng)窗口容器
   ui->label_11->setPixmap(QPixmap("C:/Users/SuJieYin/Pictures/Saved Pictures/2.png"));
   ui->scrollArea->setWidget(ui->label_11);//添加這個(gè)標(biāo)簽組件
   ui->horizontalLayout_3->addWidget(ui->scrollArea);//添加進(jìn)水平部件
   setLayout(ui->horizontalLayout_3);//顯示這個(gè)水平部件

    //Tool Box工具箱
    ui->toolBox->addItem(ui->textEdit_5,codec->toUnicode("工具1"));
    ui->toolBox->addItem(ui->textEdit_6,codec->toUnicode("工具2"));

    //TabWidget 選項(xiàng)卡-分頁(yè)顯示
    ui->tabWidget->setTabsClosable(true);//關(guān)閉
    ui->tabWidget->addTab(ui->textEdit_7,"T");
    ui->tabWidget->addTab(ui->textEdit_8,"B");
    //點(diǎn)擊X號(hào)后顯示對(duì)應(yīng)的文本
    connect(ui->tabWidget,&QTabWidget::tabCloseRequested,[&](int x){
        ui->textEdit_7->append(QString::number(x).toUtf8());
        ui->textEdit_8->append(QString::number(x).toUtf8());
    });

     //stackedWidget 堆疊窗口類
    //本教程使用的就是這個(gè)部件,來(lái)達(dá)到上一頁(yè)和下一頁(yè)之間的切換,不在過(guò)多解釋

    //MdiArea 多媒體窗口
    ui->mdiArea->addSubWindow(ui->textEdit_9);//添加子窗口
    ui->mdiArea->addSubWindow(ui->textEdit_10);

    ui->stackedWidget->setCurrentIndex(5);
}

//上一頁(yè)
void MainWindow::on_pushButton_17_clicked()
{
    ui->stackedWidget->setCurrentIndex(4);
}

【4】ui界面設(shè)計(jì)

對(duì)象和類的布局和定義位置,位置很重要

【5】代碼運(yùn)行效果圖

文件對(duì)話框,加密,顯示在第一頁(yè)

6大對(duì)話框在第二頁(yè)

按鈕類舉例

輸入小部件類和顯示文本部件類和滑動(dòng)部件類

日期,文本框,圖片,gif圖

容器部件類使用舉例

總結(jié)

在后期,我將QT全部學(xué)習(xí)內(nèi)容,做成應(yīng)用程序游戲軟件,以軟件的形式活學(xué)活用,工程龐大,目前正在籌劃,盡情期待

相關(guān)文章

  • opencv實(shí)現(xiàn)讀取視頻保存視頻

    opencv實(shí)現(xiàn)讀取視頻保存視頻

    這篇文章主要為大家詳細(xì)介紹了opencv實(shí)現(xiàn)讀取視頻保存視頻,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2018-01-01
  • C++實(shí)現(xiàn)翻轉(zhuǎn)單詞順序

    C++實(shí)現(xiàn)翻轉(zhuǎn)單詞順序

    這篇文章給大家匯總介紹了C++實(shí)現(xiàn)翻轉(zhuǎn)單詞順序的三種方法,都非常的簡(jiǎn)單,需要的朋友可以參考下
    2016-07-07
  • C++實(shí)現(xiàn)LeetCode(88.混合插入有序數(shù)組)

    C++實(shí)現(xiàn)LeetCode(88.混合插入有序數(shù)組)

    這篇文章主要介紹了C++實(shí)現(xiàn)LeetCode(88.混合插入有序數(shù)組),本篇文章通過(guò)簡(jiǎn)要的案例,講解了該項(xiàng)技術(shù)的了解與使用,以下就是詳細(xì)內(nèi)容,需要的朋友可以參考下
    2021-07-07
  • C++11 call_once 和 once_flag的使用與區(qū)別

    C++11 call_once 和 once_flag的使用與區(qū)別

    本文主要介紹了C++11 call_once 和 once_flag的使用與區(qū)別,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2023-06-06
  • MFC創(chuàng)建模態(tài)對(duì)話框和非模態(tài)對(duì)話框的方法

    MFC創(chuàng)建模態(tài)對(duì)話框和非模態(tài)對(duì)話框的方法

    這篇文章主要介紹了MFC創(chuàng)建模態(tài)對(duì)話框和非模態(tài)對(duì)話框的方法,需要的朋友可以參考下
    2014-07-07
  • 關(guān)于C++出現(xiàn)Bus error問(wèn)題的排查與解決

    關(guān)于C++出現(xiàn)Bus error問(wèn)題的排查與解決

    項(xiàng)目代碼中經(jīng)常出現(xiàn)莫名其妙的Bus error問(wèn)題,并且代碼中增加很多try catch 后依然不能將錯(cuò)誤捕獲,一旦Bus erro出現(xiàn),進(jìn)程直接崩潰掉,所以本文給大家介紹了關(guān)于C++出現(xiàn)Bus error問(wèn)題的排查與解決,需要的朋友可以參考下
    2024-01-01
  • C語(yǔ)言中的switch語(yǔ)句基本用法

    C語(yǔ)言中的switch語(yǔ)句基本用法

    這篇文章主要介紹了C語(yǔ)言中switch語(yǔ)句的基本用法,switch語(yǔ)句是一個(gè)多分支選擇語(yǔ)句,并且可以支持嵌套,感興趣的同學(xué)可以參考閱讀
    2023-03-03
  • OpenCV利用高斯模糊實(shí)現(xiàn)簡(jiǎn)單的磨皮美顏效果

    OpenCV利用高斯模糊實(shí)現(xiàn)簡(jiǎn)單的磨皮美顏效果

    這篇文章主要介紹了通過(guò)OpenCV中的高斯模糊以及雙邊模糊來(lái)實(shí)現(xiàn)一個(gè)簡(jiǎn)單的磨皮美顏效果,文中的講解很詳細(xì),感興趣的同學(xué)可以學(xué)習(xí)一下
    2021-12-12
  • C語(yǔ)言二叉樹(shù)的概念結(jié)構(gòu)詳解

    C語(yǔ)言二叉樹(shù)的概念結(jié)構(gòu)詳解

    二叉樹(shù)可以簡(jiǎn)單理解為對(duì)于一個(gè)節(jié)點(diǎn)來(lái)說(shuō),最多擁有一個(gè)上級(jí)節(jié)點(diǎn),同時(shí)最多具備左右兩個(gè)下級(jí)節(jié)點(diǎn)的數(shù)據(jù)結(jié)構(gòu)。本文將詳細(xì)介紹一下C++中二叉樹(shù)的實(shí)現(xiàn)和遍歷,需要的可以參考一下
    2022-08-08
  • C語(yǔ)言常見(jiàn)排序算法之插入排序(直接插入排序,希爾排序)

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

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

最新評(píng)論