Qt4学习(1)——制作简单的计算器界面
2015-06-06 01:48
519 查看
最近开始接触QT,看的是《Qt Creator快速入门》这本书还有网上的的一些视频,Qt使用的4.7.2版本,Qt Creator使用2.1.0版本。
下面是制作出来的简单计算器界面(界面很简陋,让大家见笑了):
下面是源代码:
总结:
1.QWidget类是所有用户界面对象的基类,同时它是继承自QObject类和QPaintDevice类。
2.使用了什么控件就要加入相应的头文件,头文件的名和控件的名字是一样的。
3.上面代码在dialog的构造函数里面使用new创建了许多个子控件但是没有在析构函数~dialog()里面进行delete操作,是因为在Qt中,凡是Widget类或者继承自Widget类,在窗口销毁的时候会自动销毁里面包含的子控件,如果在dialog的构造函数里面没有指明创建的控件为子控件的话,那就要在~dialog()里面进行delete操作。
4.使用QGridLayout布局控件可以对各种子控件进行自动布局。
5.Qt中对事件的响应(如点击事件)可以通过connect函数将信号和槽关联起来。
下面是制作出来的简单计算器界面(界面很简陋,让大家见笑了):
下面是源代码:
//dialog.h #ifndef DIALOG_H #define DIALOG_H #include <QtGui/QDialog> #include <QPushButton> #include <QLineEdit> #include <QLabel> #include <QGridLayout> #include <QTextCodec> class Dialog : public QDialog { Q_OBJECT public: Dialog(QWidget *parent = 0); ~Dialog(); private: QPushButton *add_btn;//加按钮 QPushButton *minus_btn;//减按钮 QPushButton *mult_btn;//乘按钮 QPushButton *devide_btn;//除按钮 QLineEdit *line_edit1;//左输入框 QLineEdit *line_edit2;//右输入框 QLabel *result_label;//计算结果 QLabel *left_label; QGridLayout *layout;//布局控件 private slots: //定义槽 void add(); void minus(); void multiply(); void devide(); }; #endif // DIALOG_H
//dialog.cpp #include "dialog.h" Dialog::Dialog(QWidget *parent) : QDialog(parent) { QTextCodec::setCodecForTr(QTextCodec::codecForLocale());//设置QObject::tr()所要使用的字符集,否则显示到界面的中文会出现乱码。这里使用指定的字符集,可以自己指定字符集,如QTextCodec::setCodecForTr(QTextCodec::codecForName("gb18030")); setWindowTitle(tr("简单计算器")); line_edit1 = new QLineEdit(this);//this指定了该控件是dialog的子控件 line_edit2 = new QLineEdit(this); left_label = new QLabel(this); left_label->setText(tr("计算结果:")); result_label = new QLabel(this); add_btn = new QPushButton(this); minus_btn = new QPushButton(this); mult_btn = new QPushButton(this); devide_btn = new QPushButton(this); add_btn->setText(tr("加")); minus_btn->setText(tr("减")); mult_btn->setText(tr("乘")); devide_btn->setText(tr("除")); //使用QGridLayout进行布局 layout = new QGridLayout(this); layout->addWidget(line_edit1, 0, 0); layout->addWidget(line_edit2, 0, 1); layout->addWidget(add_btn, 1, 0); layout->addWidget(minus_btn, 1, 1); layout->addWidget(mult_btn, 2, 0); layout->addWidget(devide_btn, 2, 1); layout->addWidget(left_label, 3, 0); layout->addWidget(result_label, 3, 1); //使用connect函数将发送给按钮的信号和相应的槽关联起来 connect(add_btn, SIGNAL(clicked()), this, SLOT(add())); connect(minus_btn, SIGNAL(clicked()), this, SLOT(minus())); connect(mult_btn, SIGNAL(clicked()), this, SLOT(multiply())); connect(devide_btn, SIGNAL(clicked()), this, SLOT(devide())); } Dialog::~Dialog() { } //定义槽 void Dialog::add() { QString s1 = line_edit1 ->text(); QString s2 = line_edit2 ->text(); result_label->setText(QString::number(s1.toInt() + s2.toInt())); } void Dialog::minus() { QString s1 = line_edit1 ->text(); QString s2 = line_edit2 ->text(); result_label->setText(QString::number(s1.toInt() - s2.toInt())); } void Dialog::multiply() { QString s1 = line_edit1 ->text(); QString s2 = line_edit2 ->text(); result_label->setText(QString::number(s1.toInt() * s2.toInt())); } void Dialog::devide() { QString s1 = line_edit1 ->text(); QString s2 = line_edit2 ->text(); result_label->setText(QString::number(1.0*s1.toInt() / s2.toInt())); }
//main.cpp #include <QtGui/QApplication> #include "dialog.h" int main(int argc, char *argv[]) { QApplication a(argc, argv); Dialog w; w.show(); return a.exec(); }
总结:
1.QWidget类是所有用户界面对象的基类,同时它是继承自QObject类和QPaintDevice类。
2.使用了什么控件就要加入相应的头文件,头文件的名和控件的名字是一样的。
3.上面代码在dialog的构造函数里面使用new创建了许多个子控件但是没有在析构函数~dialog()里面进行delete操作,是因为在Qt中,凡是Widget类或者继承自Widget类,在窗口销毁的时候会自动销毁里面包含的子控件,如果在dialog的构造函数里面没有指明创建的控件为子控件的话,那就要在~dialog()里面进行delete操作。
4.使用QGridLayout布局控件可以对各种子控件进行自动布局。
5.Qt中对事件的响应(如点击事件)可以通过connect函数将信号和槽关联起来。
相关文章推荐
- QT学习 第一章:基本对话框
- 使用Shiboken为C++和Qt库创建Python绑定
- winform异型不规则界面设计的实现方法
- Android中设置只有程序第一次运行才显示的界面实现思路
- hta 实现的五子棋界面
- Qt实现图片移动实例(图文教程)
- android开发之欢迎界面的小例子
- C#中载入界面的常用方法
- Qt for Android开发实例教程
- Android判断现在所处界面是否为home主桌面的方法
- android 引导界面的实现方法
- QModelIndex/Role/Model介紹<二>
- 基于PyQt5的快速开发框架QFramer
- VC 界面库皮肤库相关信息珍藏
- ok6410开发板移植DirectFB手记
- 【笔记】给Qt内嵌一个Chrome吧
- 【算法】最短路径之A*搜索
- qt入门必备
- 在 Qt4 中使用 C++11
- Hello Word ~ v0.2.2 背单词软件发布 -- By WHYPRO