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

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > windows >内容正文

windows

C++ Qt开发:SpinBox数值微调框组件

發布時間:2023/12/24 windows 43 coder
生活随笔 收集整理的這篇文章主要介紹了 C++ Qt开发:SpinBox数值微调框组件 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

Qt 是一個跨平臺C++圖形界面開發庫,利用Qt可以快速開發跨平臺窗體應用程序,在Qt中我們可以通過拖拽的方式將不同組件放到指定的位置,實現圖形化開發極大的方便了開發效率,本章將重點介紹QSpinBox精度數值組件的常用方法及靈活運用。

QSpinBox是Qt框架中的一個部件(Widget),用于提供一個方便用戶輸入整數值的界面元素。它通常以微調框(SpinBox)的形式展現,用戶可以通過微調框上的按鈕或手動輸入來增加或減少整數值。在實際使用中該控件主要用于整數或浮點數的計數顯示,與普通的LineEdit組件不同,該組件可以在前后增加特殊符號并提供了上下幅度的調整按鈕,靈活性更強。

使用場景:

  • 數值輸入: 適用于需要用戶輸入整數值的場景,如設置參數、調整數量等。
  • 調整參數: 在需要進行微小調整的地方,提供直觀的增減按鈕。
  • 限制輸入范圍: 當需要確保用戶輸入在一定范圍內時,可設置最小值和最大值。
  • 只讀展示: 可以用于只讀展示某個數值,不允許用戶修改。

以下是QSpinBox類的一些常用方法,說明并概述成表格:

方法 描述
QSpinBox(QWidget *parent = nullptr) 構造函數,創建一個整數微調框。
int value() const 獲取當前微調框中的整數值。
void setValue(int value) 設置微調框的整數值。
int minimum() const 獲取微調框的最小值。
void setMinimum(int min) 設置微調框的最小值。
int maximum() const 獲取微調框的最大值。
void setMaximum(int max) 設置微調框的最大值。
int singleStep() const 獲取單步步進值,即微調框在每次增減操作時的變化量。
void setSingleStep(int step) 設置單步步進值。
int prefix() const 獲取前綴(顯示在值之前的文本)。
void setPrefix(const QString &prefix) 設置前綴。
int suffix() const 獲取后綴(顯示在值之后的文本)。
void setSuffix(const QString &suffix) 設置后綴。
QString cleanText() const 獲取文本表示的干凈值,即不包含前綴和后綴的純文本值。
bool wrapping() const 檢查微調框是否啟用了循環,即在達到最大或最小值時是否繞回。
void setWrapping(bool on) 啟用或禁用微調框的循環。
void stepUp() 將微調框的值增加一個單步步進值。
void stepDown() 將微調框的值減少一個單步步進值。
void setAccelerated(bool on) 啟用或禁用加速,即按住上下箭頭時值的變化速度是否逐漸加快。
bool isAccelerated() const 檢查是否啟用了加速。
void setReadOnly(bool ro) 設置微調框為只讀模式,禁止用戶編輯值。
bool isReadOnly() const 檢查微調框是否為只讀模式。
void setAlignment(Qt::Alignment align) 設置微調框中文本的對齊方式。
Qt::Alignment alignment() const 獲取微調框中文本的對齊方式。
void setButtonSymbols(QAbstractSpinBox::ButtonSymbols bs) 設置增減按鈕的顯示方式。
QAbstractSpinBox::ButtonSymbols buttonSymbols() const 獲取增減按鈕的顯示方式。

這些方法涵蓋了QSpinBox類中一些常用的設置和獲取整數微調框屬性的功能。

接下來我將用一個簡單的案例展示如何使用SpinBox組件,該組件有兩個版本SpinBox()用于展示單精度浮點數,而DoubleSpinBox()則可以展示精度更高的數值,需要注意的是,該組件有兩個特殊參數,當使用setPrefix()時可以指定在前方加入特殊符號,而使用setSuffix()時則可以在后方追加特殊符號,我們就以后方追加為例,首先繪制一個窗體;

要實現計算流程很簡單,只需要在按鈕被觸發時直接調用on_pushButton_clicked()按鈕事件即可,其核心代碼如下所示;

MainWindow::MainWindow(QWidget *parent): QMainWindow(parent), ui(new Ui::MainWindow)
{
    ui->setupUi(this);

    // 在組件后方設置$特殊符號
    ui->spinBox->setSuffix(" $");
    ui->spinBox_2->setSuffix(" $");
    ui->doubleSpinBox->setSuffix(" $");

    // 設置顯示精度
    ui->doubleSpinBox->setDecimals(6);
}

MainWindow::~MainWindow()
{
    delete ui;
}

// 觸發計算流程
void MainWindow::on_pushButton_clicked()
{
     int x = ui->spinBox->value();
     int y = ui->spinBox_2->value();

     double total = x+y;
     // 設置SpinBox數值(設置時無需轉換)
     ui->doubleSpinBox->setValue(total);
}

我們繼續在SpinBox的基礎上改進,如上代碼中每次都需要點擊計算按鈕才能出結果,此時的需求是當SpinBox中的參數發生變化時自定的完成計算,這里就需要用到信號和槽了,當SpinBox被修改后,自動觸發計算信號實現計算。該需求很容易被實現,只需要將信號綁定到特定的槽函數上即可,核心代碼如下所示;

MainWindow::MainWindow(QWidget *parent): QMainWindow(parent), ui(new Ui::MainWindow)
{
    ui->setupUi(this);

    // 在組件后方設置$特殊符號
    ui->spinBox->setSuffix(" $");
    ui->spinBox_2->setSuffix(" $");
    ui->doubleSpinBox->setSuffix(" $");

    // 設置顯示精度
    ui->doubleSpinBox->setDecimals(6);

    // 始終不可編輯
    ui->doubleSpinBox->setEnabled(false);

    // 將數量和單價兩個SpinBox的valueChanged()信號與on_pushButton_clicked()槽關聯
    // 只要spinBox中的內容發生變化,則立即觸發按鈕完成計算
    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()));
}

編譯并運行上述程序,當我們的兩個選擇框其中一個發生變化時,都會自動觸發信號與on_pushButton_clicked()實現計算,效果圖如下;

總結

以上是生活随笔為你收集整理的C++ Qt开发:SpinBox数值微调框组件的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。