翻譯|使用教程|編輯:龔雪|2023-11-20 10:33:25.520|閱讀 148 次
概述:本文將為大家介紹Qt Widget的模擬計算器的示例,歡迎下載最新版組件體驗~
# 界面/圖表報表/文檔/IDE等千款熱門軟控件火熱銷售中 >>
相關鏈接:
Qt 是目前最先進、最完整的跨平臺C++開發工具。它不僅完全實現了一次編寫,所有平臺無差別運行,更提供了幾乎所有開發過程中需要用到的工具。如今,Qt已被運用于超過70個行業、數千家企業,支持數百萬設備及應用。
本文將展示如何使用信號和槽來實現計算器小部件的功能,以及如何使用QGridLayout在網格中放置子小部件。
Qt技術交流群:166830288 歡迎一起進群討論
這個例子由兩個類組成:
我們將從回顧計算器開始,然后再看看按鈕。
class Calculator : public QWidget { Q_OBJECT public: Calculator(QWidget *parent = nullptr); private slots: void digitClicked(); void unaryOperatorClicked(); void additiveOperatorClicked(); void multiplicativeOperatorClicked(); void equalClicked(); void pointClicked(); void changeSignClicked(); void backspaceClicked(); void clear(); void clearAll(); void clearMemory(); void readMemory(); void setMemory(); void addToMemory();
Calculator類提供了一個簡單的計算器小部件,它繼承自QDialog,并且有幾個與計算器按鈕相關聯的私有槽,重新實現了()來處理計算器顯示的鼠標事件。
Buttons根據其操作進行分類。例如,所有數字按鈕(標記為0到9)向當前操作數追加一個數字。對于這些,我們將多個按鈕連接到同一個插槽(例如,digitClicked())。類別包括數字、一元運算符(Sqrt、x2、1/x)、加法運算符(+、-)和乘法運算符(x、÷),其他按鈕都有自己的插槽。
private: template<typename PointerToMemberFunction> Button *createButton(const QString &text, const PointerToMemberFunction &member); void abortOperation(); bool calculate(double rightOperand, const QString &pendingOperator);
私有的createButton()函數被用作小部件構造的一部分,abortOperation()在發生除零操作或對負數進行平方根操作時調用,Calculate()應用二進制運算符(+、-、x或÷)。
double sumInMemory; double sumSoFar; double factorSoFar; QString pendingAdditiveOperator; QString pendingMultiplicativeOperator; bool waitingForOperand;
這些變量與計算器顯示的內容(QLineEdit)一起編碼計算器的狀態:
加法運算符和乘法運算符的處理方式不同,因為它們具有不同的優先級。例如,1 + 2 ÷ 3被解釋為1 + (2 ÷ 3),因為÷的優先級高于+。
下表顯示了當用戶輸入數學表達式時計算器狀態的演變。
一元操作符,如Sqrt,不需要特殊處理;它們可以立即應用,因為在單擊操作符按鈕時已經知道操作數。
QLineEdit *display; enum { NumDigitButtons = 10 }; Button *digitButtons[NumDigitButtons]; };
最后,聲明與顯示和用于顯示數字的按鈕相關聯的變量。
本站文章除注明轉載外,均為本站原創或翻譯。歡迎任何形式的轉載,但請務必注明出處、不得修改原文相關鏈接,如果存在內容上的異議請郵件反饋至chenjj@fc6vip.cn
文章轉載自:慧都網