一:Qt简介

Qt是挪威Trolltech公司的旗舰产品,作为跨平台开发框架,是开源KDE桌面的基石

Google Earch,Skype,Opera,Adobe Photoshop Element等著名软件都是基于Qt编写的

和java的”一次编写到处运行”所不同的是,Qt是源代码级的跨平台一次编写到处编译.一次开发的Qt应用程序可以移值到不同平台.目前Qt支持的平台有:Mac,Windows NT/2000/XP/Vista,unix,linux,嵌入式linux

二:Qt 集成环境搭建 安装Qt

三:一个简单的窗口

#include <qpe/qpeapplication.h>
#include "my_win.h"
Int main(int argc,char *argv[])
{QPEApplication a( argc, argv ); MyWin myWin;a.setMainWidget(&myWin) widget.show();return a.exec();
}

四:Qt体系架构

Qt的整个设计都是以单根继承为主这跟java相同.所谓单根继承就是说所有的Qt类都有一个共同的祖先都是QObject类

QObject类后面有三个大的子类分别负责不同的功能它们是:

QApplicaton:类管理图形用户界面应用程序和控制台程序的控制流和主要设置

QWidget:是所有用户界面对象的基类,负责管理图形界面

QLayout:负责管理所有图形界面的摆放方式

Qt体系架构图如下:

五:QApplication类

Qt应用程序中,首先在main函数中创建QApplication对象,QApplication对象负责图像用户界面应用程序的控制流和主设置,通过调用该对象的exec()函数,进入事件循环处理,对来自窗口系统或其他的事件进行处理和调度,直到收到exit()或quit()结束。对于任何GUI应用,都有一个QApplication实例;对于非GUI应用,应该使用QCoreApplication。

六:基础窗口部件QWidget

QWidget类是Qt中其他所有用户界面窗口类的基类,包括QComboBox、QDialog, QDialogButtonBox, QDockWidget, QFocusFrame, QFrame, QGLWidget,QGroupBox, QLineEdit、QMainWindow等,它接收鼠标键盘消息,并在屏幕上绘制自己。每个QWidget实例按照Z序显示,子QWidget覆盖父QWidget。没有嵌入到父QWidget的QWidget称为Window(窗体)。通常一个Window包含一个边框和标题栏。

QApplication对象一般要定义一个主widget部件。Widgets是一种控件,也是一种容器,可以包含其他控件,任何widget都可以是任何widget的子对象。

七:qmake工程文件

工程文件里包含了qmake建立你的应用程序(或者库,插件)所需要的所有信息。你的工程所需的资源通常通过一系列的声明语句来描述,而简单的控制结构,可以实现在不同的平台和环境下,执行不同的编译流程。

qmake工程文件是以.pro为扩展名

八:setGeometry

widget类的setGeometry该方法作用是重新设置可视组件的位置。

  textInfo = new QLabel(this,"Hello world",0);textInfo->setGeometry(10, 150, 170, 40);textInfo->setText(tr("hello world"));quitBut = new QPushButton(this,"Quit");quitBut->setGeometry(100,70,90,31);quitBut->setText(tr("quit"));

九:绝对位置方式

这种方式是通过QWidge提供的setGeometry()函数来设置子窗口部件大小和在父窗口的位置

但是绝对位置方式缺点是:如果父窗口大小发生改变,子窗口部件无法做出相应变化

绝对位位置样列如下:

#include <QApplication>
#include <QWidget>
#include <QLabel>
int main(int argc, char *argv[])
{ QApplication app(argc, argv); QWidget   *widget=new QWidget;QLabel *label = new QLabel("Hello Qt!“,widget);label->setGeometry(10,10,20,20);widget->resize(300,300);widget->show();  return app.exec();
}

十:setGeometry()函数

指定子部件在父窗体中所处的位置和大小

void QWidget::setGeometry ( int x, int y, int w, int h )

参数说明:      x:表示子部件在父窗体行的位置

y:表示子部件在父窗体列的位置

w:表示子部件宽度

h:表示子部件的高度

十一:QWidget基本函数

void QWidget::show ()//显示widget

void QWidget::hide ()//隐藏widget

bool QWidget::close ()//关闭widget

void QWidget:: resize ( int w, int h )//调整尺寸

void QWidget ::setWindowTitle

void QWidget ::setWindowIcon

十二:QPalette 调色板

调色板类:QPalette

setColor(QPalette::Background,Qt::black);   //设置背景色setBrush(QPalette::Background,QBrush(QPixmap("img/mainwindow.png")));//用笔刷设置背景图片

十三:控件

标签类 :QLabel

QLabel ::setPixmap

按钮类:QPushButton

QPushButton ::setIcon

QPushButton :: setIconSize

QPushButton :: setFocusPolicy

编辑框类 :QLineEdit

十四: Qt布局管理器

绝对位置方式/手工布局方式

布局管理方式

十五:布局管理器方式

QHBoxLayout:水平布局管理器

QVBoxLayout:垂直布局管理器

QGridLayout:网格布局管理器

绝对布局

十六:布局管理器类图

十七:布局管理器常用方法

setLayout函数:通过调用该函数设置窗口的布局模式

setLayout: //设置布局
addWidget://添加组件
addColSpacing:
setSpacing://表示各个控件之间的上下间距

十八:使用QHBoxLayout

#include <QApplication>
#include <QHBoxLayout>
#include <QPushButton>
int main(int argc, char *argv[])
{   QApplication app(argc, argv); QWidget *window = new QWidget;QPushButton *button1=new QPushButton(“OK”);QPushButton *button2=new QPushButton(“cancel”); window->setWindowTitle("Enter Your Age"); QHBoxLayout *layout = new QHBoxLayout; layout->addWidget(button1); layout->addWidget(button2); window->setLayout(layout);window->show(); return app.exec(); } 

十九:使用QVBoxLayout

#include <QApplication>
#include <QWidget>
#include <QSlider>
#include <QLCDNumber>
#include <QVBoxLayout>
int main(int argc, char *argv[]) {
QApplication app(argc, argv);
QWidget *window = new QWidget;
window->setWindowTitle("QVBoxLayout");
window->resize(240, 100);
QLCDNumber *lcd = new QLCDNumber;
QObject::connect(slider, SIGNAL(valueChanged(int)), lcd, SLOT(display(int)));
QVBoxLayout *layout = new QVBoxLayout(window);
layout->addWidget(lcd);
layout->addWidget(slider);
window->show();
return app.exec();}

二十:使用QGridLayout

#include <qapplication.h>
#include <qlayout.h>
#include <qlabel.h>
int main(int argc, char **argv)
{QApplication app(argc, argv);QWidget *wm = new QWidget;QLabel *label;QGridLayout *grid = new QGridLayout(wm, 3, 3);grid->addColSpacing(0, 200);grid->addColSpacing(1, 100);label = new QLabel("one", wm);grid->addWidget(label, 0, 0);grid->addWidget(new QLabel("two", wm), 1, 0);label = new QLabel("three", wm);grid->addWidget(label, 2, 0);grid->addWidget(new QLabel("four", wm), 1, 1);label = new QLabel("five", wm);grid->addWidget(label, 2, 2);app.setMainWidget(wm);wm->show();return app.exec();
}

二十一:QDialog类

QDialog类是对话框窗口的基类。对话框窗口是主要用于短期任务以及和用户进行简要通讯的顶级窗口。QDialog可以是模式的也可以是非模式的。QDialog支持扩展性并且可以提供返回值。它们可以有默认按钮。

二十二:对话框模式

模式:对话框就是阻塞同一应用程序中其它可视窗口的输入的对话框用户必须完成这个对话框中的交互操作并且关闭了它之后才能访问应用程序中的其它任何窗口

非模式:对话框是和同一个程序中其它窗口操作无关的对话框。在字处理软件中查找和替换对话框通常是非模式的来允许同时与应用程序主窗口和对话框进行交互。

二十三:QMessageBox静态成员

StandardButton QMessageBox::critical ( QWidget * parent, const QString & caption, const QString & text, StandardButtons buttons = Ok, StandardButton defaultButton = NoButton ) 打开一个标题为caption并且文本为text的严重消息框。这个对话框最多有三个按钮。

int warning ( QWidget * parent, const QString & caption, const QString & text, int button0, int button1, int button2 = 0 )

打开一个标题为caption并且文本为text的警告消息框。这个对话框最多有三个按钮。

StandardButton information( QWidget * parent, const QString & title, const QString & text, StandardButtons buttons = Ok, StandardButton defaultButton = NoButton )

打开一个标题为caption并且文本为text的信息消息框。这个对话框最多有三个按钮。

二十四:QMessageBox类

QMessageBox类提供了一个有一条简短消息、一个图标和一些按钮的模式对话框。 消息框用于提供情报信息并且问一些简单的问题。

二十五:Dialog常用函数

exec函数:调用exec()来显示模式对话框。当用户关闭这个对话框,exec()将提供一个可用的返回值并且这时流程控制继续从调用exec()的地方进行。

accept()槽 :在使用模式对话框,隐藏模式对话框并且设置结果代码为Accepted。

reject ()槽:隐藏模式对话框并且设置结果代码为Rejected。

show() :调用show()来显示非模式对话框. show()立即返回 。

QDialog样列如下:

QFileDialog *dlg = new QFileDialog( workingDirectory, QString::null, 0, 0, TRUE );
dlg->setCaption( QFileDialog::tr( "Open" ) );dlg->setMode( QFileDialog::ExistingFile );
QString result;
if ( dlg->exec() == QDialog::Accepted ){ result = dlg->selectedFile();workingDirectory = dlg->url();}
delete dlg; return result;

Qt GUI编程 基础入门相关推荐

  1. QT开发(五十)——QT串口编程基础

    QT开发(五十)--QT串口编程基础 一.QtSerialPort简介 1.串口通信基础 目前使用最广泛的串口为DB9接口,适用于较近距离的通信.一般小于10米.DB9接口有9个针脚. 串口通信的主要 ...

  2. MATHLAB GUI编程简易入门

    MATHLAB GUI编程简易入门 GUI面板使用 初识模板 按钮属性(其他的也类似) 先写一份简单的单按钮事件 坐标轴的使用 如何实现多个函数传递消息 GUI面板使用 最简单的当然是输入命令: gu ...

  3. python快乐编程—基础入门-从萌新到大神必读书籍 《Python快乐编程基础入门》...

    2019年,全球信息化进程持续加快,IT行业繁荣发展.作为新时代IT人,不仅需要强大的理论知识,更需要过硬的技术.Python作为最受欢迎的编程语言之一,作为人工智能时代的首选语言,因其受众多.用途广 ...

  4. Python编程实例-Tkinter GUI编程基础超级详解

    Tkinter GUI编程基础超级详解 1.什么是Tkinter Python 有很多 GUI 框架,但 Tkinter 是唯一内置到 Python 标准库中的框架. Tkinter 有几个优势. 它 ...

  5. WPF编程基础入门 ——— 第二章 XAML

    XAML 简述 XAML(eXtensible Application Markup Language,可扩展应用程序标记语言)是微软公司创建的一种新的描述性语言,用于搭建应用程序用户界面.XAML实 ...

  6. 「Linux」Linux Shell 编程基础入门

    Linux Shell 编程基础入门 1. 变量 1.1 变量定义 1.2 使用变量 1.3 引号 1.4 将命令的结果赋值给变量 1.5 位置参数 1.6 特殊变量及其含义 2. 字符串 2.1 字 ...

  7. WPF编程基础入门 ——— 第三章 布局(五)布局面板WrapPanel

    WPF布局--布局面板WrapPanel WPF--WrapPanel布局控件 WrapPanel实例--十个按钮 WPF--WrapPanel布局控件 WrapPanel(自动折行面板),允许任意多 ...

  8. GUI编程基础01AWT(了解)

    文章目录 GUI编程基础01AWT 简介 AWT(抽象窗口工具包) 组件和容器 第一个Frame窗口 frame类的常用方法 Panel面板讲解 三种布局管理器 流式布局 东西南北中 表格布局 练习 ...

  9. Qt网络编程-TcpServer入门Demo(2)

    Qt网络编程-TcpServer入门Demo(2)

  10. QT:Qt 网络编程基础

    Qt 网络编程基础 1 )网络协议层次 // linux/unix ---> 4 层  OSI ---> 7 层  应用层(应用层.表示层.会话层)  传输层(传输层) // TCP/IP ...

最新文章

  1. 蓝桥杯省赛最短路径-模板
  2. 2019-2020 ACM-ICPC Brazil Subregional Programming Contest
  3. 软件工程个人作业03
  4. Java读取指定路径下的文件列表
  5. RTMPdump(libRTMP) 源代码分析 7: 建立一个流媒体连接 (NetStream部分 2)
  6. FZU 1894 志愿者选拔
  7. Windows 95被做成了一款软件,可玩扫雷和纸牌
  8. 年底各类年会邀请函也要美美的设计
  9. hadoop05---进程线程
  10. Mysql 数据库学习笔记04 函数
  11. 当我们在讨论机器学习时我们在说些什么?
  12. 陈希孺概率与数统:入门级自学佳作
  13. 免费云笔记软件哪个好?
  14. Android开发 人民币符号(¥)显示不一致的问题
  15. USB (十三)2022-04-02
  16. 如何快速制作证件照并压缩到100K?
  17. 关闭Win7系统GUI引导的方法
  18. USB开设备开发学习之三:USB中的端点详细了解
  19. 基于STM32F103--时钟树详解和系统时钟内部流程解析
  20. 解决部署jeesite项目报错 com.thinkgem.jeesite.modules.sys.listener.WebContextListener

热门文章

  1. [推荐]ORACLE PL/SQL编程之四:把游标说透(不怕做不到,只怕想不到)
  2. [En]Web Forms Syntax Reference
  3. 现代语音信号处理之短时傅里叶分析
  4. 图解Gram matrix
  5. 记录自己的第一个稍微有趣一点的小游戏
  6. 登录处理php页面,登录处理页面
  7. nps内网穿透_内网穿透工具:NPS的使用
  8. linux机器crt连接不上,SecureCRT连不上Linux主机了,求破
  9. mysql中为啥只显示一条语句_MySQL 笔记整理(19) --为什么我只查一行的语句,也执行这么慢?...
  10. linux密码带星号,Shell实现输入密码并显示星号