• <noscript id="e0iig"><kbd id="e0iig"></kbd></noscript>
  • <td id="e0iig"></td>
  • <option id="e0iig"></option>
  • <noscript id="e0iig"><source id="e0iig"></source></noscript>
  • Qt第11課 - Qt 中的字符串類,QString, QLineEdit文本框接收按鍵字符

    標簽: QT

    本文學習自 狄泰軟件 唐佐林老師的 QT課程。


    在這里插入圖片描述
    在這里插入圖片描述
    在這里插入圖片描述
    在這里插入圖片描述
    在這里插入圖片描述
    在這里插入圖片描述
    Unicode:支持中文日文等等。。。

    在這里插入圖片描述

    實驗1 :QString 初體驗

    #include <QDebug>
    void Sample_1()
    {
        QString s = "add";
        s.append(" ");    // "add "
        s.append("Qt");   // "add Qt"
        s.prepend(" ");   // " add Qt"
        s.prepend("C++"); // "C++ add Qt"
        qDebug() << s;
        s.replace("add", "&"); // "C++ & Qt"
        qDebug() << s;
    }
    void Sample_2()
    {
        QString s = "";
        int index = 0;
        s.sprintf("%d. I'm %s, thank you!", 1, "Delphi Tang"); // "1. I'm Delphi Tang, thank you!"
        qDebug() << s;
        index = s.indexOf(",");
        s = s.mid(0, index);   // "1. I'm Delphi Tang"
        qDebug() << s;
        index = s.indexOf(".");
        s = s.mid(index + 1, s.length()); // " I'm Delphi Tang"
        s = s.trimmed();                  // "I'm Delphi Tang"
        qDebug() << s;
        index = s.indexOf(" ");
        s = s.mid(index + 1, s.length()); // "Delphi Tang"
        qDebug() << s;
    }
    void Sample_3(QString* a, int len)
    {
        for(int i=0; i<len; i++)
        {
            for(int j=i+1; j<len; j++)
            {
                if( a[j] < a[i] )
                {
                    QString tmp = a[i];
                    a[i] = a[j];
                    a[j] = tmp;
                }
            }
        }
    }
    int main()
    {
        qDebug() << "Sample_1:";
        Sample_1();
        qDebug() << endl;
        qDebug() << "Sample_2:";
        Sample_2();
        qDebug() << endl;
        qDebug() << "Sample_3:";
        QString company[5] =
        {
            QString("Oracle"),
            QString("Borland"),
            QString("Microsoft"),
            QString("IBM"),
            QString("D.T.Software")
        };
        Sample_3(company, 5);
        for(int i=0; i<5; i++)
        {
            qDebug() << company[i];
        }
        return 0;
    }
    

    在這里插入圖片描述
    在這里插入圖片描述

    實驗2:為計算器實例添加消息響應–獲取按鍵輸入回顯到QLineEdit 文本框

    QCalculatorUI.h
    
    #ifndef _QCALCULATORUI_H_
    #define _QCALCULATORUI_H_
    #include <QWidget>
    #include <QLineEdit>
    #include <QPushButton>
    class QCalculatorUI : public QWidget
    {
        Q_OBJECT
    private:
        QLineEdit* m_edit;
        QPushButton* m_buttons[20];
        QCalculatorUI();
        bool construct();
    private slots:
        void onButtonClicked();  //槽與處理的信號 在函數簽名上必須一致
    public:
        static QCalculatorUI* NewInstance();
        void show();
        ~QCalculatorUI();
    };
    #endif
    
    
    QCalculatorUI.c
    #include "QCalculatorUI.h"
    #include <QDebug>
    QCalculatorUI::QCalculatorUI() : QWidget(NULL, Qt::WindowCloseButtonHint)
    {
    }
    bool QCalculatorUI::construct()
    {
        bool ret = true;
        const char* btnText[20] =
        {
            "7", "8", "9", "+", "(",
            "4", "5", "6", "-", ")",
            "1", "2", "3", "*", "<-",
            "0", ".", "=", "/", "C",
        };
        m_edit = new QLineEdit(this);
        if( m_edit != NULL )
        {
            m_edit->move(10, 10);
            m_edit->resize(240, 30);
            m_edit->setReadOnly(true);
        }
        else
        {
            ret = false;
        }
        for(int i=0; (i<4) && ret; i++)
        {
            for(int j=0; (j<5) && ret; j++)
            {
                m_buttons[i*5 + j] = new QPushButton(this);
                if( m_buttons[i*5 + j] != NULL )
                {
                    m_buttons[i*5 + j]->resize(40, 40);
                    m_buttons[i*5 + j]->move(10 + (10 + 40)*j, 50 + (10 + 40)*i);
                    m_buttons[i*5 + j]->setText(btnText[i*5 + j]);
                    connect(m_buttons[i*5 + j], SIGNAL(clicked()), this, SLOT(onButtonClicked()));
                }
                else
                {
                    ret = false;
                }
            }
        }
        return ret;
    }
    QCalculatorUI* QCalculatorUI::NewInstance()
    {
        QCalculatorUI* ret = new QCalculatorUI();
        if( (ret == NULL) || !ret->construct() )
        {
            delete ret;
            ret = NULL;
        }
        return ret;
    }
    void QCalculatorUI::show()
    {
        QWidget::show();
        setFixedSize(width(), height());
    }
    void QCalculatorUI::onButtonClicked()
    {
        QPushButton* btn = (QPushButton*)sender();
    
    // 直接獲取計算器文本框QLineEdit 中字符串內容,再將點擊按鈕的字符直接接在后面
        QString text = m_edit->text() + btn->text();
    
    //將獲取的字符串回顯到文本框QLineEdit
        m_edit->setText(text);
    
        qDebug() << "onButtonClicked()";
        qDebug() << btn->text();
    }
    QCalculatorUI::~QCalculatorUI()
    {
    }
    

    在這里插入圖片描述

    實驗成功獲取輸入按鍵的字符并回顯到QLineEdit,但是對于一些特殊的字符 如 = 運算符,我們不能顯示到QLineEdit。

    實驗3 為計算器實例添加消息響應–獲取按鍵輸入,并做處理,有些字符不能回顯到QLineEdit 文本框。

    if( m_edit != NULL )
    {
        m_edit->move(10, 10);
        m_edit->resize(240, 30);
        m_edit->setReadOnly(true);
        m_edit->setAlignment(Qt::AlignRight);//顯示向右對齊
    }
    

    void QCalculatorUI::onButtonClicked()
    {
    QPushButton* btn = (QPushButton*)sender();
    QString clickText = btn->text();

    if( clickText == "<-" )
    {
        QString text = m_edit->text();
    
        if( text.length() > 0 )
        {
            text.remove(text.length()-1, 1);
    
            m_edit->setText(text);
        }
    }
    else if( clickText == "C" )
    {
        m_edit->setText("");
    }
    else if( clickText == "=" )
    {
    
    }
    else
    {
        m_edit->setText(m_edit->text() + clickText);
    }
    

    }

    在這里插入圖片描述

    版權聲明:本文為LinuxArmbiggod原創文章,遵循 CC 4.0 BY-SA 版權協議,轉載請附上原文出處鏈接和本聲明。
    本文鏈接:https://blog.csdn.net/LinuxArmbiggod/article/details/105579858

    智能推薦

    【QT開發筆記-基礎篇】| 第二章 常用控件 | 2.4 文本框 QLineEdit

    本節對應的視頻講解:B_站_鏈_接 https://www.bilibili.com/video/BV1bU4y1S7f7 QLineEdit 是 Qt 中的文本框,準確地說是單行文本框,通常用于接受用戶的輸入 比如用戶輸入用戶名、密碼等,都可以使用該控件。 1. 屬性和方法 QLineEdit 有很多屬性,完整的可查看幫助文檔。這里列出常用的屬性和方法: 1.1 占位字符串 占位字符,就是當文本...

    第20課 - Qt 中的標準對話框(中)

                         ...

    Qt中的QlineEdit

    概述: QLineEdit 類代表編程框,它可以讓用戶輸入一個單行文本。類似于登錄窗口中的賬號和密碼的輸入框(行編輯) 1,構造函數: 其中 contents 表示編輯框中顯示的內容。 2,屬性 (1)alignment 屬性表示顯示文本的對齊方式,相關成員函數如下: 它的含義與 QLabel 類的 alignment 屬性相同。 maxLength 屬性表示編輯框可以容許的最大輸入長度, (2)...

    HTML中常用操作關于:頁面跳轉,空格

    1.頁面跳轉 2.空格的代替符...

    freemarker + ItextRender 根據模板生成PDF文件

    1. 制作模板 2. 獲取模板,并將所獲取的數據加載生成html文件 2. 生成PDF文件 其中由兩個地方需要注意,都是關于獲取文件路徑的問題,由于項目部署的時候是打包成jar包形式,所以在開發過程中時直接安照傳統的獲取方法沒有一點文件,但是當打包后部署,總是出錯。于是參考網上文章,先將文件讀出來到項目的臨時目錄下,然后再按正常方式加載該臨時文件; 還有一個問題至今沒有解決,就是關于生成PDF文件...

    猜你喜歡

    電腦空間不夠了?教你一個小秒招快速清理 Docker 占用的磁盤空間!

    Docker 很占用空間,每當我們運行容器、拉取鏡像、部署應用、構建自己的鏡像時,我們的磁盤空間會被大量占用。 如果你也被這個問題所困擾,咱們就一起看一下 Docker 是如何使用磁盤空間的,以及如何回收。 docker 占用的空間可以通過下面的命令查看: TYPE 列出了docker 使用磁盤的 4 種類型: Images:所有鏡像占用的空間,包括拉取下來的鏡像,和本地構建的。 Con...

    requests實現全自動PPT模板

    http://www.1ppt.com/moban/ 可以免費的下載PPT模板,當然如果要人工一個個下,還是挺麻煩的,我們可以利用requests輕松下載 訪問這個主頁,我們可以看到下面的樣式 點每一個PPT模板的圖片,我們可以進入到詳細的信息頁面,翻到下面,我們可以看到對應的下載地址 點擊這個下載的按鈕,我們便可以下載對應的PPT壓縮包 那我們就開始做吧 首先,查看網頁的源代碼,我們可以看到每一...

    Linux C系統編程-線程互斥鎖(四)

    互斥鎖 互斥鎖也是屬于線程之間處理同步互斥方式,有上鎖/解鎖兩種狀態。 互斥鎖函數接口 1)初始化互斥鎖 pthread_mutex_init() man 3 pthread_mutex_init (找不到的情況下首先 sudo apt-get install glibc-doc sudo apt-get install manpages-posix-dev) 動態初始化 int pthread_...

    統計學習方法 - 樸素貝葉斯

    引入問題:一機器在良好狀態生產合格產品幾率是 90%,在故障狀態生產合格產品幾率是 30%,機器良好的概率是 75%。若一日第一件產品是合格品,那么此日機器良好的概率是多少。 貝葉斯模型 生成模型與判別模型 判別模型,即要判斷這個東西到底是哪一類,也就是要求y,那就用給定的x去預測。 生成模型,是要生成一個模型,那就是誰根據什么生成了模型,誰就是類別y,根據的內容就是x 以上述例子,判斷一個生產出...

    精品国产乱码久久久久久蜜桃不卡