08-启航!计算器应用实例

1. 设计与实现

【界面设计】
-定义组件间的间隔  space = 10px
-定义按钮组件的大小 Width = 40px,Width = 40px
-定义文本框组件的大小 Width = 5 *40px + 4*10px,Height = 30px

在这里插入图片描述

2. QLineEdit

  • QLineEdit 用于接收用户输入
  • QLineEdit 能够获取用户输入的字符串
  • QLineEdit 是功能组件,需要父组件作为容器
  • QLineEdit 能够在父组件中进行定位
QWidget w; // 生成 QWidget 对象,顶级组件
QLineEdit le(&w); // 生成 QLineEdit 对象,其父组件为 WQidget

le.setAlignment(Qt::Alignment);  // 设置显示的字符串向右对齐
le.move(10,10);  // 移动到坐标 (10,10)
le.resize(240,30);  // 设置大小 width = 240,heigh = 30

3. 计算器界面代码实现

QApplication a(argc, argv);
QWidget* w = new QWidget(NULL, Qt::WindowCloseButtonHint);
QLineEdit* le = new QLineEdit(w);
QPushButton* button[20] = {0};
const char* btnText[20] =
{
"7", "8", "9", "+", "(",
"4", "5", "6", "-", ")",
"1", "2", "3", "*", "<-",
"0", ".", "=", "/", "C",
};
int ret = 0;

le->move(10, 10);
le->resize(240, 30);
le->setReadOnly(true);

for(int i=0; i<4; i++)
{
for(int j=0; j<5; j++)
{
button[i*5 + j] = new QPushButton(w);
button[i*5 + j]->resize(40, 40);
button[i*5 + j]->move(10 + (10 + 40)*j, 50 + (10 + 40)*i);
button[i*5 + j]->setText(btnText[i*5 + j]);
}
}

w->show();
w->setFixedSize(w->width(), w->height());

ret = a.exec();

delete w;

return ret;

关键代码走读:

  • 第2行设置 Widget 式样,不需要最大化和最小化按钮
  • 第16行设置 LineEdit 只读,不能从键盘输入,后期使用信号与槽机制通过按钮输入
  • 第30行设置窗口固定大小

4. 总结

  • GUI 应用程序开发应该先对界面进行设计
  • GUI 应用程序界面需要考虑各个细节,界面决定最终用户的体验,界面细节是 GUI 应用程序品质的重要体现
  • QT 库有能力实现各种 GUI 应用程序需要,我们要擅长查阅帮助文档
发布了61 篇原创文章 · 获赞 31 · 访问量 10万+

猜你喜欢

转载自blog.csdn.net/qq_40794602/article/details/105554767