基本窗口类QWidget

QWidget是所有窗体部件的基类,例如对话框类,主窗体类,以及其他诸如按钮,编辑框,标签等等都是由QWidget派生得到,QWidget拥有的方法往往都可以在其他子类中使用。

窗体的几何尺寸分为包含边框和标题、不包含边框和标题两种。

以下是常用函数

(1)包括窗框(即整个窗口)的函数。

x(),y(),pos():获取左上角坐标

frameGeometry():获取窗体尺寸(返回一个矩形QRect)

move():移动窗体到某个位置。

(2)不包括窗体(即客户区域)(返回一个矩形QRect)

width(),heigh():获取客户区宽度、高度

setGeometry():设置窗体在屏幕中的位置。

窗体几何尺寸的设置和获取

首先我们建立一个基于QWidget的无UI设计界面的Qt Widgets Application应用。

在main.cpp头部文件添加

#include<QDebug>

 

然后,修改主函数main.cpp文件如下

#include "widget.h"
#include <QApplication>
#include<QDebug>
int main(int argc, char *argv[])
{QApplication a(argc, argv);Widget w;w.show();w.setGeometry(50,50,200,200);qDebug() << w.x() << " " << w.y();qDebug() << w.geometry().width() << " " << w.frameGeometry().width();qDebug() << w.geometry().height() << " " << w.frameGeometry().height();return a.exec();
}

保存后运行

运行上面的程序会显示一个窗口,如图

它的客户区左上角距离屏幕左上角边界均为50,客户区的长和宽均为200

这里的(41,12)是窗体框架左上角的坐标,它在客户区的左上角(50,50)的左上方。而显示器左上角是原点。

setGeometry函数设置客户区在屏幕上的位置及其宽度、高度。

窗口标题及大小控制

首先建立一个基于QWidget的有UI设计界面的Qt Widgets Application应用。

然后修改Widget.cpp文件的构造函数如下:

窗口控件类概览

标签

标签(QLabel)一般用于显示简单的文本。例如:

QLabel *label = new QLabel(this);
label->setGemoetry(10,10,150,80);
label->setText("Label");
//设置文本对齐方式,多个参数用 | 分隔
label->setAlignment(Qt::AlignHCenter|Qt::AlignVCenter);

标签文本对齐方式定义如下:

AlignTop:将文本添加到QLabel对象的上部

AlignButton:将文本添加到QLabel对象的下部

AlignLeft:沿着QLabel对象的左边添加文本

AlignRight:沿着QLabel对象的右边添加文本

AlignHCenter:将文本添加到QLabel对象水平中心的位置

AlignVCenter:将文本添加到QLabel对象的垂直中心位置

用标签显示位图

第一步,建立一个基类位QWidget的应用

添加需要展示的图片

第二步,修改main函数如下

#include "widget.h"
#include <QApplication>
#include <QLabel>
#include <QImage>
int main(int argc, char *argv[])
{QApplication a(argc, argv);Widget w;QLabel *pTag = new QLabel(&w);//路径不同,图片属性不同,请自行修改路径和属性//QImage image("e:/img.png");pTag->setPixmap(QPixmap::fromImage(image));pTag->setGeometry(0,0,image.width(),image.height());w.show();return a.exec();

这个例子用QImage对象载入E盘根目录下的png文件,再利用QPixmap::formImage静态函数将png格式转换为xpm格式,然后用setPixmap函数设置标签位图。

按钮

对于普通按钮而言,可设置图标,文字,显示状态等。

按钮的使用

第一步,建立一个基类为QDialog的应用,在创建过程中取消UI界面设计文件。

第二步,修改dialog.h文件如下

第三步,打开“新建”菜单,选择Qt ->“Qt资源文件”,在工程项目中添加资源文件,可任意命名

第四步,在工程目录中添加文件夹rc,然后将两个图标文件放入其中(在线制作ico图标  http://www.bitbug.net/  )

第五步,在button.qrc项目上右击,在弹出的菜单选择“添加现有文件”,将rc目录下的图标分别添加到工程项目中。

第六步,修改dialog.cpp文件的Dialog类构造函数:

    resize(150,150);  //设置主窗体大小pushButton1 = new QPushButton(this);  // 新建按钮QIcon icon1(":/rc/bitbug_favicon.ico");  // 定义图标对象pushButton1->setIcon(icon1);  //  设置按钮图标pushButton1->setGeometry(20,20,70,40);pushButton2 = new QPushButton(this);QIcon icon2(":bitbug_favicon(1).ico");pushButton2->setIcon(icon2);pushButton2->setFlat(true); //  将按钮设置为平面显示pushButton2->setText("Open");  //  设置按钮的文本信息pushButton2->setGeometry(20,70,70,40);

点击运行后

单选按钮、复选框

单选按钮用于在众多选项中选择一项,复选框用于在众多选项中同时选择多项

单选按钮,复选框的使用

第一步,建立一个基于QWidget类的有UI设计界面的应用程序。

第二步,在UI设计器中放入两个复选框,两个标签,两个单选按钮

在本例中,修改单选按钮和复选框的objectName和text属性如下:

两个单选按钮的objectName改为RadioBtn1,RadioBtn2

两个单选按钮的文本test改为男,女

两个复选框的objectName改为CheckBox1,CheckBox2

两个复选框的文本test改为教师,学生

两个标签的objectName改为label,label_2

void Widget::on_RadioBtn1_clicked()
{   // "男"单选按钮为选中状态ui->RadioBtn1->setChecked(true);//label标签显示相应的内容ui->label->setText("你选中了男生");
}void Widget::on_RadioBtn2_clicked()
{// "女"单选按钮为选中状态ui->RadioBtn2->setChecked(true);//label标签显示相应的内容ui->label->setText("你选中了女生");
}void Widget::displayCheckBox()
{QString str; //定义字符串//使用条件语句判断if(ui->CheckBox1->isChecked() && ui->CheckBox2->isChecked()){str = "你选中了教师!\n你选中了学生!";}else if(ui->CheckBox1->isChecked()){str +="你选中了教师!" ;}else if(ui->CheckBox2->isChecked()){str +="你选中了学生!";}//将str显示到label_2标签ui->label_2->setText(str);
}void Widget::on_CheckBox1_clicked()
{//调用自定义公有成员函数this->displayCheckBox();
}void Widget::on_CheckBox2_clicked()
{this->displayCheckBox();
}

先告一段落。下一篇实现一下组合框的使用

Qt图形界面编程入门(基本窗口及控件)相关推荐

  1. 《Qt图形界面编程入门》课后习题全解

    代码地址 https://github.com/duganlx/QT 说明 以下答案并非来自官方,而是本人自己实现的,若有啥问题,欢迎讨论(^-^) 所基于的书籍为<Qt图形界面编程入门> ...

  2. Qt图形界面编程入门(4)

    构造函数和析构函数 构造函数是一个与类同名的特殊的公有成员函数. 创建类对象时构造函数会被调用,且只调用一次/ 构造函数无返回类型. ·  默认构造函数格式: 类名(){.......} Accoun ...

  3. Qt图形界面编程入门(Qt的历史、Qt安装资源链接、Qt Creator简介)

    Qt的历史渊源 Qt是1991年由挪威的奇趣科技(Trolltech)公司开发的跨平台C++图形用户界面(GUI)用程序开发框架,2008年,奇趣科技公司被诺基亚公可收购,Qt也因此成为诺基亚公司旗下 ...

  4. Qt图形界面编程入门(创建一个简单的程序)

    1,手工编码方式 利用手工编码方式建立"Hello Qt!"程序 第一步: 得到界面 2,无UI的向导方式 从图中,我们发现向导为窗口程序提供了3个基类,分别外QMainWindo ...

  5. Qt图形界面编程入门(信号和槽通信机制)

    信号和槽机制是Qt的核心机制,可以让编程人员将互不相关的对象绑定在一起,实现对象之间的通信. 声明了信号的对象,当其状态改变时,信号就由该对象发送出去,而且该对象只负责发送信号,它不知道另一端是谁在接 ...

  6. Qt图形界面编程入门(3)

    公有成员和私有成员 从访问权限上分,类的成员又分为:公有成员(public).私有成员(private)和保护成员(protected)三类. ·  公有成员用public来说明.这部分成员可以在程序 ...

  7. Qt图形界面编程入门(标签与槽机制习题分享)

    标签对象初始显示0,每次单击标签对象后,其显示内容就加1,依次变为1.2.3等. #ifndef DIALOG_H #define DIALOG_H#include <QDialog> # ...

  8. Qt图形界面编程入门(7)

    派生类的构造函数和析构函数 基类的构造函数和析构函数不能被继承. 在派生类中,如果派生类新增的成员进行初始化,就必须加入新的构造函数.与此同时,对所有从基类继承下来的成员的初始化工作还是由基类的构造函 ...

  9. Qt图形界面编程入门(6)

    类的私有继承方式 ①基类公有成员和保护成员都作为私有成员被派生类继承,派生类自身的函数可直接访问他们,但是派生类对象则只能通过本类的公有函数间接地访问它们. ②基类的私有成员成为派生类中更加封闭的私有 ...

最新文章

  1. 北航计算机软件基础试题,北航2010计算机软件技术基础试题与答案.pdf
  2. Dapper学习笔记(3)-增、删、改、查
  3. 操作系统原理第三章:进程
  4. oracle重新恢复数据库,重新安装oracle根据原数据文件恢复数据库
  5. 制作Geek风格的投影片
  6. c语言文件指针ab命令,C语言试题,~库(完整版~).doc
  7. 如何向女朋友解释什么是HTTP协议
  8. easyui 添加下拉框数据_电商教父:关于淘宝关键词点击率以及提升数据的方法...
  9. python读行-Python如何一次读取N行
  10. 青州市2021年高考成绩查询,2021年青州市高考状元名单资料,今年青州市高考状元多少分...
  11. 腾达u2无线网卡驱动Linux,腾达u2网卡驱动下载
  12. 软件测试 | App测试——Appium实战总结,淘宝App测试项目案例
  13. 资金合规结算——聚焦银行内部两种不同账户
  14. 豆瓣top250-词云案例
  15. 思科EVE模拟器开机几个要点
  16. 闭包:让外部函数能访问函数内的变量,让局部变量长期贮存在内存中
  17. ubtuntu安装java
  18. 动态网页和静态网页的区别
  19. 关于蓝屏错误IRQL_NOT_LESS_OR_EQUAL
  20. Vue 项目搭建流程和使用大全

热门文章

  1. python实现多智能体一致性_促进产学研,多智能体协同控制——科研与实践教学齐飞...
  2. qt求一个区间的随机数
  3. GPUImage – 像素色值亮度平均(漫画效果) GPUImageAverageLuminanceThresholdFilter
  4. 教你做前端表单文本框必填
  5. 可选版本 安装软件_【Linux软件】在Deepin系统下安装LibreOffice 6.1.4版本的方法
  6. 智能云媒体服务器,智慧广电媒体解决方案
  7. java死锁怎么用jvm调试,线程死锁演示,线程锁演示,模拟JVM的线程次序调度
  8. java thread 线程销毁_手把手带你了解Java线程的实现方式及生命周期原理
  9. 计算机一级办公软件选择题,计算机一级MSOffice习题
  10. java 拦截器ajax_(转)拦截器深入实践 - JAVA XML JAVASCRIPT AJAX CSS - BlogJava