本人刚开始学习QT,有一些C语言基础,了解一点点C++,以下是一个QT例子,其中有很多语言不懂,望高人指点~

2024-12-19 08:47:24
推荐回答(3个)
回答1:

Ticker(QWidget *parent = 0);//为什么在括号内要有(QWidget *parent = 0)?
这是构造函数的参数。C++可以使用默认参数。其实写成iQWidget *parent = NULL;就是没有父窗口,就更容易理解了。

void paintEvent(QPaintEvent *event);//(QPaintEvent *event)又是什么意思?定义了event一个指针?如果说定义一个event指针那为什么下面三句又定义了event指针?
你这么问,应该是基础不好,C/C++的参数名是任意的,只要符合语法要求就可以,因此是可以相同的,这个只是函数的参数,而不是定义变量。三个event指针,是三个不同类型的事件指针,是三个函数的参数,不是定义变量。

Ticker::Ticker(QWidget *parent) : QWidget(parent)//前一个ticker指的是类,第二个ticker是成员函数还是?,那后面的两个括号内指的是什么?
第二个是构造函数,Ticker(QWidget *parent)是构造函数,QWidget *parent是构造函数的参数;
: QWidget(parent)是初始化列表的格式,你可以搜索一下 初始化列表 来查一下更具体的内容。

void Ticker::showEvent(QShowEvent * /* event */)//定义类和成员函数?括号内又是干什么的?是否可以将QShowEvent *换成QShowEvent * event ?
可以,函数定义的时候,是可以写参数,也可以不写,只简写参数的类型。

QWidget::timerEvent(event);//调用类和成员函数?括号内event怎么又没有*号了?
感觉你的基础真的不好,函数定义的时候,参数是要写类型的,所以那个*是表示指针类型。
而函数调用的时候,参数是指针类型的,就可以直接使用啊。如果不是指针,就用取地址符号(&)转成地址(指针就是地址)。
void paintEvent(QPaintEvent *event);//这样是定义,其实这么写更好一些
void paintEvent( QPaintEvent * event);//这个函数的参数是event,event的类型是QPaintEvent * 。感觉你的理解是这个函数的参数时 * event,而参数类型是QPaintEvent ,那样就错了。不知道你明白没有。

给你一些建议,因为你的基础看起来不是很好,建议看看谭浩强的《C++程序设计》等你完全理解这些问题了,再看看钱能的《C++程序设计》。再看国外的经典书。基础很重要,很重要。

回答2:

你的问题好多,我挑几个来回答:
Ticker(QWidget *parent = 0);是Ticker的构造函数,parent是QWidget*类型的传入参数,这里默认为0,表示Ticker是一个独立的窗口,否则Ticker就是parent里面的子窗口。
void paintEvent(QPaintEvent *event);以及下面三个函数都是事件响应函数,paintEvent是窗口重绘函数,event在这几个函数里面是不同类型的参数,代表事件的信息。
A::B后面的B是A的成员。
剩下的问题都是C++类的基本概念问题,你可以看书解决。
从你提的问题看,你的C语言基础不怎么样,C++更是知之甚少。建议认真看下c++ primer等书,打好基础再来学Qt吧

回答3:

都是c++基础语法,和QT无关,建议先看看c++语法.
c++的语法是很复杂的,不是随便看看就可以的.