实现几个窗口间的交互+一个软键盘
创建一个项目,基类选择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。