不要qt designer,像写java程序一样,把控件一个一个写到界面上。刚开始来个简单的计数器。
程序执行的结果如图:
程序很简单,由三个源文件组成,分别是caculator.h,caculator.cpp,main.cpp
代码如下:
1、caculator.h

/**//*
* 文件:caculator.h
* 作者:yangdk
* email:jidacun@163.com
* 主页:http://blog.youkuaiyun.com/yang_dk
*/
#ifndef _CACULATOR_H
#define _CACULATOR_H
#include <QDialog>
class QLabel;
class QLineEdit;
class QPushButton;
class QVBoxLayout;
class QHBoxLayout;
class QGridLayout;
class CacuDialog : public QDialog
...{
Q_OBJECT
public:
CacuDialog(QWidget *parent = 0);
private slots:
void add();
void dec();
void mul();
void div();
void clear();
private:
QLineEdit *editFirst;
QLineEdit *editSecond;
QLineEdit *editResult;
QPushButton *addButton,*decButton,*mulButton,*divButton;
QPushButton *clearButton;
};
#endif
2、caculator.cpp

/**//*
* 文件:caculator.cpp
* 作者:yangdk
* 邮箱:jidacun@163.com
* 主页:http://blog.youkuaiyun.com/yang_dk
*/
#include <QtGui>
#include "caculator.h"
CacuDialog::CacuDialog(QWidget *parent) : QDialog(parent)
...{
editFirst = new QLineEdit;
editSecond = new QLineEdit;
editResult = new QLineEdit;
editResult->setReadOnly(true); //显示控件只读
editResult->setAlignment(Qt::AlignRight); //让结果的显示向右对齐
addButton = new QPushButton(tr("Add"));
decButton = new QPushButton(tr("Dec"));
mulButton = new QPushButton(tr("Mul"));
divButton = new QPushButton(tr("Div"));
clearButton = new QPushButton(tr("clear"));
clearButton->setDefault(true);
connect(addButton,SIGNAL(clicked()),this,SLOT(add()));
connect(decButton,SIGNAL(clicked()),this,SLOT(dec()));
connect(mulButton,SIGNAL(clicked()),this,SLOT(mul()));
connect(divButton,SIGNAL(clicked()),this,SLOT(div()));
connect(clearButton,SIGNAL(clicked()),this,SLOT(clear()));
QVBoxLayout *mainLayout = new QVBoxLayout;
QHBoxLayout *top = new QHBoxLayout;
QGridLayout *bottom =new QGridLayout;
top->addWidget(editFirst);
top->addWidget(editSecond);
top->addWidget(editResult);
bottom->addWidget(addButton, 0, 0);
bottom->addWidget(decButton, 0, 1);
bottom->addWidget(mulButton, 1, 0);
bottom->addWidget(divButton, 1, 1);
bottom->addWidget(clearButton,0,2,2,1);//占两横一列
mainLayout->addLayout(top);
mainLayout->addLayout(bottom);
setLayout(mainLayout);
}
void CacuDialog::add()
...{
double res;
res = editFirst->text().toDouble()+editSecond->text().toDouble();
editResult->setText(QString::number(res));
}
void CacuDialog::dec()
...{
double res;
res = editFirst->text().toDouble()-editSecond->text().toDouble();
editResult->setText(QString::number(res));
}
void CacuDialog::mul()
...{
double res;
res = editFirst->text().toDouble()*editSecond->text().toDouble();
editResult->setText(QString::number(res));
}
void CacuDialog::div()
...{
double res;
res = editFirst->text().toDouble()/editSecond->text().toDouble();
editResult->setText(QString::number(res));
}
void CacuDialog::clear()
...{
editFirst->setText("");
editSecond->setText("");
editResult->setText("0");
}3、main.cpp

/**//*
* 文件:main.cpp
* 作者:yangdk
* email:jidacun@163.com
* 主页:http://blog.youkuaiyun.com/yang_dk
*/
#include <QApplication>
#include <QtGui>
#include "caculator.h"
int main(int argc, char *argv[])
...{
QApplication app(argc,argv);
CacuDialog dialog;
return dialog.exec();
}ok!将这三个文件放在同一个目录下,进入这个文件夹,执行下面三句话
qmake -project
qmake
make //这一局视你的环境而定,可能是make,tmake,nmake好了,这就生成了可执行文件。直接运行就可以得到上面图示的结果。

本文介绍了一种不使用Qt Designer的方式,通过纯代码手动布局来实现一个具备加减乘除功能的简易计算器。该计算器使用Qt框架进行开发,并详细展示了三个核心文件(caculator.h、caculator.cpp和main.cpp)的具体代码实现。

被折叠的 条评论
为什么被折叠?



