日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程资源 > 编程问答 >内容正文

编程问答

【第8章:常用控件】

發(fā)布時(shí)間:2023/12/9 编程问答 29 豆豆
生活随笔 收集整理的這篇文章主要介紹了 【第8章:常用控件】 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

CSDN話題挑戰(zhàn)賽第2期
參賽話題:Qt應(yīng)用程序開(kāi)發(fā)

文章目錄

    • 8 常用控件
      • 8.1 QLabel 控件使用
      • 8.2 QLineEdit
      • 8.3 其他控件
      • 8.4 自定義控件

8 常用控件

Qt為我們應(yīng)用程序界面開(kāi)發(fā)提供的一系列的控件,下面我們介紹兩種最常用一些控件,所有控件的使用方法我們都可以通過(guò)幫助文檔獲取。

8.1 QLabel 控件使用

QLabel是我們最常用的控件之一,其功能很強(qiáng)大,我們可以用來(lái)顯示文本,圖片和動(dòng)畫(huà)等。

1、顯示文字(普通文本、html)

通過(guò)QLabel類(lèi)的setText函數(shù)設(shè)置顯示的內(nèi)容:

void setText(const QString &)

  • 可以顯示普通文本字符串

QLable *label = new QLable;

label->setText(“Hello, World!”);

  • 可以顯示HTML格式的字符串

    比如顯示一個(gè)鏈接:

QLabel * label = new QLabel(this);

label ->setText(“Hello, World”);

label ->setText(“

<a href=“https://www.baidu.com”>百度一下

”);

label ->setOpenExternalLinks(true);

其中setOpenExternalLinks()函數(shù)是用來(lái)設(shè)置用戶(hù)點(diǎn)擊鏈接之后是否自動(dòng)打開(kāi)鏈接,如果參數(shù)指定為true則會(huì)自動(dòng)打開(kāi)。

2、顯示動(dòng)畫(huà)

可以使用QLabel 的成員函數(shù)setMovie加載動(dòng)畫(huà),可以播放gif格式的文件

void setMovie(QMovie * movie)

首先定義QMovied對(duì)象,并初始化:

QMovie *movie = new QMovie(“:/Mario.gif”);

播放加載的動(dòng)畫(huà):

movie->start();

將動(dòng)畫(huà)設(shè)置到QLabel中:

QLabel *label = new QLabel;

label->setMovie(movie);

8.2 QLineEdit

Qt提供的單行文本編輯框。

1、設(shè)置/獲取內(nèi)容

  • 獲取編輯框內(nèi)容使用text(),函數(shù)聲明如下:

QString text() const

  • 設(shè)置編輯框內(nèi)容

void setText(const QString &)

2、設(shè)置顯示模式

使用QLineEdit類(lèi)的setEchoMode () 函數(shù)設(shè)置文本的顯示模式,函數(shù)聲明:

void setEchoMode(EchoMode mode)

EchoMode是一個(gè)枚舉類(lèi)型,一共定義了四種顯示模式:

  • QLineEdit::Normal 模式顯示方式,按照輸入的內(nèi)容顯示。

  • QLineEdit::NoEcho 不顯示任何內(nèi)容,此模式下無(wú)法看到用戶(hù)的輸入。

  • QLineEdit::Password 密碼模式,輸入的字符會(huì)根據(jù)平臺(tái)轉(zhuǎn)換為特殊字符。

  • QLineEdit::PasswordEchoOnEdit 編輯時(shí)顯示字符否則顯示字符作為密碼。

另外,我們?cè)偈褂肣LineEdit顯示文本的時(shí)候,希望在左側(cè)留出一段空白的區(qū)域,那么,就可以使用QLineEdit給我們提供的setTextMargins函數(shù):

void setTextMargins(int left, int top, int right, int bottom)

用此函數(shù)可以指定顯示的文本與輸入框上下左右邊界的間隔的像素?cái)?shù)。

8.3 其他控件

Qt中控件的使用方法可參考Qt提供的幫助文檔。

項(xiàng)目名稱(chēng):08_OtherControl

widget.cpp

#include "widget.h" #include "ui_widget.h" #include<QMovie>Widget::Widget(QWidget *parent): QWidget(parent), ui(new Ui::Widget) {ui->setupUi(this);//設(shè)置默認(rèn)值//棧控件使用//scrollArea按鍵connect(ui->btn_scrollArea,&QPushButton::clicked,[=](){ui->stackedWidget->setCurrentIndex(2);});//toolBox按鈕connect(ui->btn_ToolBox,&QPushButton::clicked,[=](){ui->stackedWidget->setCurrentIndex(1);});//TabWidget按鈕connect(ui->btn_GroupBox,&QPushButton::clicked,[=](){ui->stackedWidget->setCurrentIndex(0);});//下拉框ui->comboBox->addItem("奔馳");ui->comboBox->addItem("寶馬");ui->comboBox->addItem("特斯拉");//選中特斯拉connect(ui->btn_select,&QPushButton::clicked,[=](){ui->comboBox->setCurrentIndex(2);});//利用QLabel顯示圖片ui->lbl_Image->setPixmap(QPixmap(":/Image/butterfly.png"));//利用QLabel顯示,GIF動(dòng)態(tài)圖片QMovie *movie = new QMovie(":/Image/mario.gif");ui->lbl_movie->setMovie(movie);//播放動(dòng)圖movie->start(); }Widget::~Widget() {delete ui; }

運(yùn)行效果圖

8.4 自定義控件

在搭建Qt窗口界面的時(shí)候,在一個(gè)項(xiàng)目中很多窗口,或者是窗口中的某個(gè)模塊會(huì)被經(jīng)常性的重復(fù)使用。一般遇到這種情況我們都會(huì)將這個(gè)窗口或者模塊拿出來(lái)做成一個(gè)獨(dú)立的窗口類(lèi),以備以后重復(fù)使用。

在使用Qt的ui文件搭建界面的時(shí)候,工具欄欄中只為我們提供了標(biāo)準(zhǔn)的窗口控件,如果我們想使用自定義控件怎么辦?

例如:我們從QWidget派生出一個(gè)類(lèi)SmallWidget,實(shí)現(xiàn)了一個(gè)自定窗口,

// smallwidget.h class SmallWidget : public QWidget {Q_OBJECT public:explicit SmallWidget(QWidget *parent = 0);signals:public slots: private:QSpinBox* spin;QSlider* slider; };// smallwidget.cpp SmallWidget::SmallWidget(QWidget *parent) : QWidget(parent) {spin = new QSpinBox(this);slider = new QSlider(Qt::Horizontal, this);// 創(chuàng)建布局對(duì)象QHBoxLayout* layout = new QHBoxLayout;// 將控件添加到布局中layout->addWidget(spin);layout->addWidget(slider);// 將布局設(shè)置到窗口中setLayout(layout);// 添加消息響應(yīng)connect(spin, static_cast<void (QSpinBox::*)(int)>(&QSpinBox::valueChanged),slider, &QSlider::setValue);connect(slider, &QSlider::valueChanged, spin, &QSpinBox::setValue); }

那么這個(gè)SmallWidget可以作為獨(dú)立的窗口顯示,也可以作為一個(gè)控件來(lái)使用:

打開(kāi)Qt的.ui文件,因?yàn)镾mallWidget是派生自Qwidget類(lèi),所以需要在ui文件中先放入一個(gè)QWidget控件, 然后再上邊鼠標(biāo)右鍵

彈出提升窗口部件對(duì)話框

添加要提升的類(lèi)的名字,然后選擇 添加

添加之后,類(lèi)名會(huì)顯示到上邊的列表框中,然后單擊提升按鈕,完成操作.

我們可以看到, 這個(gè)窗口對(duì)應(yīng)的類(lèi)從原來(lái)的QWidget變成了SmallWidget

再次運(yùn)行程序,這個(gè)widget_3中就能顯示出我們自定義的窗口了.

項(xiàng)目名稱(chēng):05_Qt_Contral

mainwindow.cpp

#include "mainwindow.h" #include "ui_mainwindow.h" #include<QDebug>MainWindow::MainWindow(QWidget *parent): QMainWindow(parent), ui(new Ui::MainWindow) {ui->setupUi(this);//設(shè)置單選按鈕 默認(rèn)選中男ui->rBtnMan->setChecked(true);//選中女后 打印信息connect(ui->rBtnWoman,&QRadioButton::clicked,[=](){qDebug()<<"選中女了";});//多選按鈕 選中老板人好后 打印一句話//選中返回2 未選中返回0connect(ui->cBox,&QCheckBox::stateChanged,[=](int state){ // qDebug()<<"老板人好";qDebug()<<state;}); }MainWindow::~MainWindow() {delete ui; }

運(yùn)行效果圖:

2、再添加listWidget組件后

mainwindow.cpp

#include "mainwindow.h" #include "ui_mainwindow.h" #include<QDebug>MainWindow::MainWindow(QWidget *parent): QMainWindow(parent), ui(new Ui::MainWindow) {ui->setupUi(this);//設(shè)置單選按鈕 默認(rèn)選中男ui->rBtnMan->setChecked(true);//選中女后 打印信息connect(ui->rBtnWoman,&QRadioButton::clicked,[=](){qDebug()<<"選中女了";});//多選按鈕 選中老板人好后 打印一句話//選中返回2 未選中返回0connect(ui->cBox,&QCheckBox::stateChanged,[=](int state){ // qDebug()<<"老板人好";qDebug()<<state;});//利用listWidget 寫(xiě)詩(shī) // QListWidgetItem * item = new QListWidgetItem("鋤禾日當(dāng)午"); // //將一行詩(shī)放入到listWidget控件中 // ui->listWidget->addItem(item); // //設(shè)置為水平居中 // item->setTextAlignment(Qt::AlignHCenter);//QStringList QList<QString>QStringList list;list<<"鋤禾日當(dāng)午"<<"汗滴禾下土"<<"誰(shuí)知盤(pán)中餐"<<"粒粒皆辛苦";ui->listWidget->addItems(list); }MainWindow::~MainWindow() {delete ui; }

運(yùn)行效果圖:

項(xiàng)目名稱(chēng):06_TreeWidget

widget.cpp

#include "widget.h" #include "ui_widget.h"Widget::Widget(QWidget *parent): QWidget(parent), ui(new Ui::Widget) {ui->setupUi(this);//treeWidget樹(shù)控件使用//設(shè)置水平頭ui->treeWidget->setHeaderLabels(QStringList()<<"英雄"<<"英雄介紹");QTreeWidgetItem * LiItem = new QTreeWidgetItem(QStringList()<<"力量");QTreeWidgetItem * MinItem = new QTreeWidgetItem(QStringList()<<"敏捷");QTreeWidgetItem * ZhiItem = new QTreeWidgetItem(QStringList()<<"智力");//加載頂層的節(jié)點(diǎn)ui->treeWidget->addTopLevelItem(LiItem);ui->treeWidget->addTopLevelItem(MinItem);ui->treeWidget->addTopLevelItem(ZhiItem);//追加子節(jié)點(diǎn)QStringList heroL1,heroL2;heroL1<<"剛被豬"<<"前排坦克,能在吸收傷害的同時(shí)造成可觀的范圍輸出";heroL2<<"船長(zhǎng)"<<"前排坦克,能肉能輸出能控場(chǎng)的全能英雄";QTreeWidgetItem * l1 = new QTreeWidgetItem(heroL1);QTreeWidgetItem * l2 = new QTreeWidgetItem(heroL2);LiItem->addChild(l1);LiItem->addChild(l2);QStringList heroM1,heroM2;heroM1<<"月騎"<<"中排物理輸出,可以使用分裂利刃攻擊多個(gè)目標(biāo)";heroM2<<"小魚(yú)人"<<"前排戰(zhàn)士,擅長(zhǎng)偷取敵人的屬性來(lái)增強(qiáng)自身戰(zhàn)力";QTreeWidgetItem * m1 = new QTreeWidgetItem(heroM1);QTreeWidgetItem * m2 = new QTreeWidgetItem(heroM2);MinItem->addChild(m1);MinItem->addChild(m2);QStringList heroZ1,heroZ2;heroZ1<<"死靈法師"<<"前排法師坦克,魔法抗性較高,擁有治療技能";heroZ2<<"巫醫(yī)"<<"后排輔助法師,可以使用奇特的巫術(shù)詛咒敵人與治療隊(duì)友";QTreeWidgetItem * z1 = new QTreeWidgetItem(heroZ1);QTreeWidgetItem * z2 = new QTreeWidgetItem(heroZ2);ZhiItem->addChild(z1);ZhiItem->addChild(z2);}Widget::~Widget() {delete ui; }

運(yùn)行效果圖:

項(xiàng)目名稱(chēng):07_TableWidget

widget.cpp

#include "widget.h" #include "ui_widget.h"Widget::Widget(QWidget *parent): QWidget(parent), ui(new Ui::Widget) {ui->setupUi(this);//TableWidget 控件//設(shè)置列數(shù)ui->tableWidget->setColumnCount(3);//設(shè)置水平表頭ui->tableWidget->setHorizontalHeaderLabels(QStringList()<<"姓名"<<"性別"<<"年齡");//設(shè)置行數(shù)ui->tableWidget->setRowCount(5);//設(shè)置正文 // ui->tableWidget->setItem(0,0,new QTableWidgetItem("亞瑟"));QStringList nameList;nameList<<"亞瑟"<<"趙云"<<"張飛"<<"關(guān)羽"<<"花木蘭";QStringList sexList;sexList<<"男"<<"男"<<"男"<<"男"<<"女";for(int i = 0;i<5;i++){int col = 0;ui->tableWidget->setItem(i,col++,new QTableWidgetItem(nameList[i]));ui->tableWidget->setItem(i,col++,new QTableWidgetItem(sexList[i]));//int 轉(zhuǎn) QStringui->tableWidget->setItem(i,col++,new QTableWidgetItem(QString::number((i+18))));} }Widget::~Widget() {delete ui; }

運(yùn)行結(jié)果:

如果對(duì)你有幫助的話,請(qǐng)不要忘了給我一點(diǎn)點(diǎn)點(diǎn)…支持 ( ^ o ^)/~

總結(jié)

以上是生活随笔為你收集整理的【第8章:常用控件】的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。