linux 下Qt初级教程(一)实现简易的计算器
2016-11-10 13:59
459 查看
Qt初级教程(一)实现简易的计算器
本文原创作者:冯一川(ifeng12358@163.com),如有转载,请注明原作者及出处。
本文软件环境linux(Ubuntu)+Qt 5.6.0。
本文使用的技术点有:
1、信号和槽的使用,包括(emit)的使用;
2、字符串的处理,QString函数;
3、QLabel的边框设置。
创建一个QMainWindow项目。
先看界面布局
头文件mianwindow.h
mainwindow.cpp文件
main.cpp文件
编辑完之后,运行就可以了。
有什么不理解的,大家可以给我发邮件(fyclab@qq.com)。
源代码地址:http://download.csdn.net/detail/ifeng12358/9678920
本文原创作者:冯一川(ifeng12358@163.com),如有转载,请注明原作者及出处。
本文软件环境linux(Ubuntu)+Qt 5.6.0。
本文使用的技术点有:
1、信号和槽的使用,包括(emit)的使用;
2、字符串的处理,QString函数;
3、QLabel的边框设置。
创建一个QMainWindow项目。
先看界面布局
头文件mianwindow.h
#ifndef MAINWINDOW_H #define MAINWINDOW_H //#define QT_NO_OPENGL #include <QMainWindow> #include <QString> namespace Ui { class MainWindow; } class MainWindow : public QMainWindow { Q_OBJECT public: explicit MainWindow(QWidget *parent = 0); ~MainWindow(); private slots: void on_pushButton_clicked(); void displayInput(QString str); void on_pushButton_2_clicked(); void on_pushButton_3_clicked(); void on_pushButton_4_clicked(); void on_pushButton_5_clicked(); void on_pushButton_6_clicked(); void on_pushButton_7_clicked(); void on_pushButton_8_clicked(); void on_pushButton_9_clicked(); void on_pushButton_10_clicked(); void on_pushButton_12_clicked(); void on_pushButton_13_clicked(); void on_pushButton_14_clicked(); void on_pushButton_15_clicked(); void on_pushButton_11_clicked(); void on_pushButton_16_clicked(); signals: void input(QString str); private: Ui::MainWindow *ui; bool _Flag; }; #endif // MAINWINDOW_H
mainwindow.cpp文件
#include "mainwindow.h" #include "ui_mainwindow.h" #include <QDebug> MainWindow::MainWindow(QWidget *parent) : QMainWindow(parent), ui(new Ui::MainWindow) { ui->setupUi(this); ui->my_label->setStyleSheet("border:0.5px solid gray;"); ui->my_label->setText(""); _Flag = false; connect(this,SIGNAL(input(QString)),this,SLOT(displayInput(QString))); } MainWindow::~MainWindow() { delete ui; } void MainWindow::displayInput(QString str) { ui->my_label->setText(ui->my_label->text() + str); } void MainWindow::on_pushButton_clicked() //num 1 { emit input(ui->pushButton->text()); } void MainWindow::on_pushButton_2_clicked() //num 2 { emit input(ui->pushButton_2->text()); } void MainWindow::on_pushButton_3_clicked() //num 3 { emit input(ui->pushButton_3->text()); } void MainWindow::on_pushButton_4_clicked() //num 4 { emit input(ui->pushButton_4->text()); } void MainWindow::on_pushButton_5_clicked() //num 5 { emit input(ui->pushButton_5->text()); } void MainWindow::on_pushButton_6_clicked() //num 6 { emit input(ui->pushButton_6->text()); } void MainWindow::on_pushButton_7_clicked() //num 7 { emit input(ui->pushButton_7->text()); } void MainWindow::on_pushButton_8_clicked() //num 8 { emit input(ui->pushButton_8->text()); } void MainWindow::on_pushButton_9_clicked() //num 9 { emit input(ui->pushButton_9->text()); } void MainWindow::on_pushButton_10_clicked() //num 0 { emit input(ui->pushButton_10->text()); } void MainWindow::on_pushButton_12_clicked() //num + { if(_Flag == false) { emit input(ui->pushButton_12->text()); _Flag = true; }else{ on_pushButton_11_clicked(); ui->my_label->setText(ui->my_label->text()+"+"); } } void MainWindow::on_pushButton_13_clicked() //num - { if(_Flag == false) { emit input(ui->pushButton_13->text()); _Flag = true; }else{ on_pushButton_11_clicked(); ui->my_label->setText(ui->my_label->text()+"-"); } } void MainWindow::on_pushButton_14_clicked() //num * { if(_Flag == false) { emit input(ui->pushButton_14->text()); _Flag = true; }else{ on_pushButton_11_clicked(); ui->my_label->setText(ui->my_label->text()+"*"); } } void MainWindow::on_pushButton_15_clicked() //num / { if(_Flag == false) { emit input(ui->pushButton_15->text()); _Flag = true; }else{ on_pushButton_11_clicked(); ui->my_label->setText(ui->my_label->text()+"/"); } } void MainWindow::on_pushButton_11_clicked() //num = { QString str1 = ui->my_label->text(); if(str1.contains('+',Qt::CaseSensitive)) { int iPos = str1.indexOf('+',Qt::CaseSensitive); QString nValue = ""; int iValue = (str1.left(iPos)).toInt()+(str1.right(iPos)).toInt(); nValue = QString("%1").arg(iValue); ui->my_label->setText(nValue); _Flag = false; }else if(str1.contains('-',Qt::CaseSensitive)) { int iPos = str1.indexOf('-',Qt::CaseSensitive); QString nValue = ""; int iValue = (str1.left(iPos)).toInt()-(str1.right(iPos)).toInt(); nValue = QString("%1").arg(iValue); ui->my_label->setText(nValue); _Flag = false; }else if(str1.contains('*',Qt::CaseSensitive)) { int iPos = str1.indexOf('*',Qt::CaseSensitive); QString nValue = ""; int iValue = (str1.left(iPos)).toInt()*(str1.right(iPos)).toInt(); nValue = QString("%1").arg(iValue); ui->my_label->setText(nValue); _Flag = false; }else if(str1.contains('/',Qt::CaseSensitive)) { int iPos = str1.indexOf('/',Qt::CaseSensitive); if((str1.right(iPos))!="0") { QString nValue = ""; double iValue = (str1.left(iPos)).toDouble()/(str1.right(iPos)).toDouble(); nValue = QString("%1").arg(iValue); ui->my_label->setText(nValue); }else{ ui->my_label->setText("0"); } _Flag = false; } } void MainWindow::on_pushButton_16_clicked() { _Flag = false; ui->my_label->setText(""); }
main.cpp文件
#include "mainwindow.h" #include <QApplication> int main(int argc, char *argv[]) { QApplication a(argc, argv); MainWindow w; w.show(); return a.exec(); }
编辑完之后,运行就可以了。
有什么不理解的,大家可以给我发邮件(fyclab@qq.com)。
源代码地址:http://download.csdn.net/detail/ifeng12358/9678920
相关文章推荐
- [初级教程]arm-linux裸机开发之-bootstrap.bin的实现
- 在LINUX中实现JSP联接MYSQL初级教程
- QT和linux实现简易远程聊天工具
- [初级教程]用SecureCRT+Xming轻松远程实现Linux的X DISPLAY
- QT实现简易Linux命令执行器
- 在LINUX中实现JSP联接MYSQL初级教程
- 简易DNS教程 LINUX
- sd卡驱动在linux 2.6.24上的实现简易心得
- Linux下J2EE简易高效三层模式实现
- Linux零基础初级教程
- .Net实现本地化简易教程
- sd卡驱动在linux 2.6.24上的实现简易心得 及 好的url地址
- 计算器简易实现
- Android初级教程——实现共享优先数据方法 Shared Preferences
- linux_Nginx简易配置教程
- 用VirtualBox实现xp下多系统(dsl linux安装)图文教程
- linux系统Qt实现简单的任务管理器 推荐
- linux的初级教程
- 嵌入式Linux上QT标准键盘输入的实现
- 习题10:参照Windows系统“附件”中的“计算器”,自行编写一个简易的计算器。要求:可以实现由0~4构成的整数的加减运算。