没有合适的资源?快使用搜索试试~ 我知道了~
首页QT入门:HelloWorld示例与基础组件
QT入门:HelloWorld示例与基础组件
需积分: 31 28 下载量 34 浏览量
更新于2024-07-25
收藏 585KB PDF 举报
"本篇QT入门教程旨在为初学者提供基础的编程指引,从创建第一个Qt应用程序开始。教程的第一章,即"Hello, World!",展示了如何编写并运行一个最简单的Qt程序。关键知识点包括: 1. QApplication类:这是Qt中的核心类之一,每个Qt应用都需要至少一个QApplication对象。它负责管理应用程序的基本资源,如字体、光标等,并处理用户交互。 2. QPushButton类:该类是Qt中的一个图形用户界面组件,代表一个可以点击的按钮。QPushButton继承自QWidget,允许程序员定制其外观,如大小、颜色和文本内容。它是用户与程序交互的重要元素。 3. main函数:作为程序的入口点,main函数通常用于进行必要的初始化,比如设置应用程序参数 argc 和 argv(命令行参数),然后将控制权交给Qt库。库会通过事件循环监听用户操作并相应处理。 在后续的教程章节中,可能会深入讲解如何创建窗口、布局管理器、信号与槽机制以及使用Qt的各种控件和功能。初学者通过这些步骤可以逐步掌握Qt的基础知识,包括其MVC架构、信号/槽系统以及丰富的控件库,从而为开发高效、用户友好的跨平台应用程序打下坚实基础。对于希望进入Qt开发领域的学习者来说,理解并实践这些基本概念至关重要。"
资源详情
资源推荐
![](https://csdnimg.cn/release/download_crawler_static/5477811/bgb.jpg)
w.show();
return a.exec();
}
这里我们举例说明了我们的新子窗口部件,把它设置为主窗口部件,并且执行
这个应用程序。
行为
这个程序和上一章的在行为上非常相似。不同点是我们实现的方式。无论如何
它的行为还是有一些小差别。试试改变它的大小,你会看到什么?
(请看编译来学习如何创建一个makefile和连编应用程序。)
练习
试着在 main()中创建另一个 MyWidget 对象。发生了什么?
试着添加更多的按钮或者把除了QPushButton之外的东西放到窗口部件中。
现在你可以进行第五章了。
Qt 教程一 —— 第五章:组装积木
这个例子显示了创建几个窗口部件并用信号和槽把它们连接起来,和如何处理
重新定义大小事件。
/****************************************************************
**
** Qt 教程一 - 5
**
****************************************************************/
#include <qapplication.h>
#include <qpushbutton.h>
#include <qslider.h>
#include <qlcdnumber.h>
![](https://csdnimg.cn/release/download_crawler_static/5477811/bgc.jpg)
#include <qfont.h>
#include <qvbox.h>
class MyWidget : public QVBox
{
public:
MyWidget( QWidget *parent=0, const char *name=0 );
};
MyWidget::MyWidget( QWidget *parent, const char *name )
: QVBox( parent, name )
{
QPushButton *quit = new QPushButton( "Quit", this, "quit" );
quit->setFont( QFont( "Times", 18, QFont::Bold ) );
connect( quit, SIGNAL(clicked()), qApp, SLOT(quit()) );
QLCDNumber *lcd = new QLCDNumber( 2, this, "lcd" );
QSlider * slider = new QSlider( Horizontal, this, "slider" );
slider->setRange( 0, 99 );
slider->setValue( 0 );
connect( slider, SIGNAL(valueChanged(int)), lcd, SLOT(display(int)) );
}
int main( int argc, char **argv )
{
QApplication a( argc, argv );
MyWidget w;
a.setMainWidget( &w );
w.show();
return a.exec();
}
一行一行地解说
#include <qapplication.h>
#include <qpushbutton.h>
#include <qslider.h>
#include <qlcdnumber.h>
![](https://csdnimg.cn/release/download_crawler_static/5477811/bgd.jpg)
#include <qfont.h>
#include <qvbox.h>
这里显示的是三个新的被包含的头文件。qslider.h和qlcdnumber.h在这里是因为我们使用了两个
新的窗口部件,QSlider和QLCDNumber。qvbox.h在这里是因为我们使用了Qt的自动布局支持。
class MyWidget : public QVBox
blic:
get( QWidget *parent=0, const char *name=0 );
idget::MyWidget( QWidget *parent, const char *name )
MyWidget现在继承了QVBox,而不是QWidget。我们通过这种方式来使用QVBox的布局(它可
QLCDNumber *lcd = new QLCDNumber( 2, this, "lcd" );
lcd 是一个 QLCDNumber,一个可以按像 LCD 的方式显示数字的窗口部件。这
QSlider * slider = new QSlider( Horizontal, this, "slider" );
QSlider是一个经典的滑块,用户可以通过在拖动一个东西在一定范围内调节一个整数数值的方
connect( slider, SIGNAL(valueChanged(int)), lcd, SLOT(display(int)) );
这里我们是用了信号/槽机制把滑块的valueChanged()信号和LCD数字的display()槽连接起来了。
么时候滑块的值发生了变化,它都会通过发射 valueChanged()信号来广播
这个新的值。因为这个信号已经和 LCD 数字的 display()槽连接起来了,当信号
方式不同,但有着普通 C++成员函数的方位规则。
{
pu
MyWid
};
MyW
: QVBox( parent, name )
{
以把它的子窗口部件垂直地放在自己里面)。重新定义大小自动地被QVBox处理,因此现在也
就被MyWidget处理了。
个实例被设置为显示两个数字,并且是 this 的子窗口部件。它被命名为“lcd”。
slider->setRange( 0, 99 );
slider->setValue( 0 );
式来使用这个窗口部件。这里我们创建了一个水平的滑块,设置它的范围是 0~99(包括 0和99,
参见QSlider::setRange()文档)并且它的初始值是 0。
无论什
被广播的时候,这个槽就被调用了。这两个对象中的任何一个都不知道对方。
这就是组件编程的本质。
槽是和普通 C++成员函数的
行为
剩余60页未读,继续阅读
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://profile-avatar.csdnimg.cn/272b8b54bf1548038f2644e609080481_wu1fu.jpg!1)
风云1
- 粉丝: 2
- 资源: 4
上传资源 快速赚钱
我的内容管理 展开
我的资源 快来上传第一个资源
我的收益
登录查看自己的收益我的积分 登录查看自己的积分
我的C币 登录后查看C币余额
我的收藏
我的下载
下载帮助
![](https://csdnimg.cn/release/wenkucmsfe/public/img/voice.245cc511.png)
最新资源
- AirKiss技术详解:无线传递信息与智能家居连接
- Hibernate主键生成策略详解
- 操作系统实验:位示图法管理磁盘空闲空间
- JSON详解:数据交换的主流格式
- Win7安装Ubuntu双系统详细指南
- FPGA内部结构与工作原理探索
- 信用评分模型解析:WOE、IV与ROC
- 使用LVS+Keepalived构建高可用负载均衡集群
- 微信小程序驱动餐饮与服装业创新转型:便捷管理与低成本优势
- 机器学习入门指南:从基础到进阶
- 解决Win7 IIS配置错误500.22与0x80070032
- SQL-DFS:优化HDFS小文件存储的解决方案
- Hadoop、Hbase、Spark环境部署与主机配置详解
- Kisso:加密会话Cookie实现的单点登录SSO
- OpenCV读取与拼接多幅图像教程
- QT实战:轻松生成与解析JSON数据
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
![](https://img-home.csdnimg.cn/images/20220527035711.png)
![](https://img-home.csdnimg.cn/images/20220527035711.png)
![](https://img-home.csdnimg.cn/images/20220527035111.png)
安全验证
文档复制为VIP权益,开通VIP直接复制
![](https://csdnimg.cn/release/wenkucmsfe/public/img/green-success.6a4acb44.png)