Qt快速上手(三):编程示例

本文介绍如何使用Qt实现多个窗口间的交互,包括创建带有软键盘功能的对话框。首先创建一个主窗口,设置布局和样式,接着添加软键盘功能,通过信号与槽机制响应按钮点击事件。此外,还展示了如何创建新的Dialog窗口,以及在Result窗口中显示软键盘输入的内容。通过这些步骤,读者可以理解Qt中窗口交互和软键盘的基本实现。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

实现几个窗口间的交互+一个软键盘

 

创建一个项目,基类选择QWidget,类名用Widget。创建完成后进入widget.ui界面。

点击主页面,找到右下角的minimumSize大小和geometry里面的大小,都设置800x600。

从左侧栏拖出一个Label控件和四个PushButton控件,Label控件设置窗口最小值和geometry的大小都为300x100,

PushButton控件都设置为200x50。右键Label控件,选择“改变样式表”,在窗口中输入font: 57 36pt "Ubuntu";Label文本更改为“Qt编程示例”,按钮的文本改为”Mykeyboard”、”To Dialog”、”Result”、”Quit”如图所示

从左侧栏拖出一个Vertical Layout,把四个按钮放进去,然后在右下角的vertical layout属性设置修改为如图所示

 

从左侧栏拖出两个Horizontal Spacer放在左右两边,然后把两个个Horizontal Spacer 和 Label 以及刚才的Vertical Layout框全部选中,点击主页面上面的      这个按钮。右下角的layoutSpacing设置为50,完成后如图

 

再从左侧拖入两个Vertical Spacer放在上下两边,然后选中两个Vertical Spacer和中间这个Horizontal Spacer大框,点击上面的垂直布局按钮。最后,找块主页面的空白地方,再次点击上面的垂直布局或者水平布局(这步不可少)。完成后如下图

 

为使中文不显示乱码,可以在main.cpp中加入<QTextCodec>头文件,和代码QTextCodec::setCodecForTr(QTextCodec::codecForName("UTF-8"));

按前面说过的方法添加资源文件,在widget.cpp中使用如下代码给widget加入图片背景

 

1.QPixmap pixmap(":/img5.png");  
2.QPalette palette = this->palette();  
3.palette.setBrush(QPalette::Background,QBrush(pixmap.scaled(QApplication::desktop()->size())));  
4.this->setPalette(palette);  

 

第三行用到了desktop的函数要引入<QDesktopWidget>头文件。

运行

 

在刚才的项目中添加新文件,选择Qt设计师界面类,界面模板选择Dialog without Buttons,类名用Dialog,拖入一个Label,然后按照前面的方法进行格式设置(窗口大小,布局,字体等),完成后如下图

 

 

按照前面的代码在dialog.cpp中也加入一个图片背景。

在widget.h中加入#include "dialog.h"和一个成员Dialog *mydialog,在widget.cpp的构造函数中加入mydialog = new Dialog(this) ;代码

然后进入widget.ui中,右键To Dialog按钮,选择转到槽,选择clicked(),确定后在跳转的函数体中加入mydialog->show();

此时我们运行程序,点击To Dialog按钮就能出现Dialog的窗口了。

 

继续在widget.ui中,右键Quit按钮,转到槽,选择clicked(),在函数体添加close();

此时运行程序,点击Quit按钮就能关闭窗口了。

 

软键盘的实现

继续在刚才的项目中添加新文件,选择Qt设计师界面类,界面模板选择Dialog without Buttons,类名用Mykeyboard。

软键盘就是供鼠标点击使用的键盘,整体思想就是信号与槽实现按下某个键时(鼠标按下某个按钮),文本输入框上显示出当前按下的键。

当按下确定键时,将文本显示在Result窗口中。

 

mykeyboard.h中的代码

1.#ifndef MYKEYBOARD_H  
2.#define MYKEYBOARD_H  
3.  
4.#include <QDialog>  
5.#include <QToolButton>  
6.#include <QLineEdit>  
7.  
8.namespace Ui {  
9.class Mykeyboard;  
10.}  
11.  
12.class Mykeyboard : public QDialog  
13.{  
14.    Q_OBJECT  
15.  
16.public:  
17.    explicit Mykeyboard(QWidget *parent = 0);  
18.    ~Mykeyboard();  
19.    friend class Widget ;  
20.  
21.private:  
22.    Ui::Mykeyboard *ui;  
23.    QToolButton *SoftKey[40] ;//所有的软键盘按钮  
24.    QLineEdit *Line ;//文本输入框  
25.    QString CurString ;//按下确定后保存再CurString里  
26.  
27.private slots:  
28.    void Init() ;  
29.    void Click1() ;  
30.    void Click2() ;  
31.    void Click3() ;  
32.    void Click4() ;  
33.    void Click5() ;  
34.    void Click6() ;  
35.    void Click7() ;  
36.    void Click8() ;  
37.    void&nb
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值