问题
在编写QT程序时,不同颜色表示不同的含义。在设计基本的界面,需要使用QRadioButton时,相应的字符为紫色,紫色为类名。这篇简单说明了下,也可以鼠标点击页面,可以出现提示。
但是上面图片中显示,QPushButton没有自动转换为紫色,而是依然保持为黑色,鼠标点击也没有任何提示。察看dialog.h头文件,可以看到包含QPushButton文件。直到发现,pirate中包含了相关控件的对象名的声明,才意识到。虽然声明这个类,但是仍然需要使用new操作符作用一下。这与C语言编写的逻辑不同,毕竟C语言中,这都直接说明了要使用这个指针变量,应该是可以用的。这提醒我,在没有熟悉C++语法的情况下,轻易会带入C语言的编写逻辑,尤其这些程序还是我复制他人的,更加会出现这种情况。
#include <QDialog>
#include <QCheckBox>
#include <QRadioButton>
#include <QPlainTextEdit>
#include <QPushButton>
class Dialog : public QDialog
{
Q_OBJECT
private:
QCheckBox *chkBoxUnder;
QCheckBox *chkBoxItalic;
QCheckBox *chkBoxBold;
QRadioButton *radioBlack;
QRadioButton *radioRed;
QRadioButton *radioBlue;
QPlainTextEdit *txtEdit;
QPushButton *pushClear;
QPushButton *pushOK;
QPushButton *pushclose;
public:
Dialog(QWidget *parent = nullptr);
~Dialog();
private:
};
如果觉得麻烦,也可以直接在进行new操作的时候,直接在指针前面添加类名。不过这种在前后都添加类的作法,倒是显得多此一举。值得注意的是,没有必要研究为什么要进行这种的设计,否则学习的过程就会陷入各种细节中。
QPushButton *pushTest=new QPushButton("this");
软件预处理
由于qt的软件处理所有界面字符预处理,所以有些代码写上去之后,不会马上显示相应的颜色。比如如下的代码,由于qt没有马上检测到我在其它文件中所做的修改,导致它无法短时间内识别其中的改变。因此,写QT代码时,尤其代码体量比较大时,需要考虑编译环境对文本处理的影响。此时,如果没有发现明显问题,可以直接运行程序,或者等待一会就会发现函数名等颜色发生变化。
connect(chkBoxBold,SIGNAL(clicked(bool)),this,SLOT(do_chkBoxBold(bool)));
注意:需要提醒的是,在学习QT过程,有种冲动想要了解C++语法和各种函数的细节。但是目前情况来看,这种做没有实在意义,会导致对各种函数概念咬文嚼字。