考虑两个类A和B
class A
{
public:
A(int);
~A();
};
class B : public A
{
public:
B(int);
~B();
};
int main()
{
A* aobj;
B* bobj = new bobj(5);
}
Run Code Online (Sandbox Code Playgroud)
现在这个类B继承了A.
我想创建一个对象B.我知道创建一个派生类对象,也会调用基类构造函数,但这是没有任何参数的默认构造函数.
我想要的是B获取一个参数(比如5),并将其传递给构造函数A.请展示一些代码来演示这个概念.
我知道要在类中使用Qt的信号和插槽机制,该类必须包含Q_OBJECT宏,但我试图使用信号和插槽main(),而不使用任何类.
到目前为止,这是我的代码:
#include <QApplication>
#include <QWidget>
#include <QTextEdit>
#include <QtGui>
void saveText();
int main(int argv, char **args)
{
QApplication app(argv, args);
QTextEdit textEdit;
QPushButton saveButton("Save!");
QPushButton exitButton("Exit!");
QObject::connect(&exitButton,SIGNAL(clicked()),qApp,SLOT(quit()));
QObject::connect(&saveButton,SIGNAL(clicked()),qApp,SLOT(saveText()));
QVBoxLayout vlyt;
vlyt.addWidget(&textEdit);
vlyt.addWidget(&exitButton);
vlyt.addWidget(&saveButton);
QWidget mainWindow;
mainWindow.setLayout(&vlyt);
mainWindow.show();
return app.exec();
}
void saveText()
{
exit(0);
}
Run Code Online (Sandbox Code Playgroud)
这是生成的GUI窗口:
从上面的代码中,退出按钮连接到quit(),这是一个Qt函数,当点击它工作.分配给该功能的保存按钮saveText()配置为退出,但不执行此操作.
请告诉我在理解Qt中的信号和插槽时出错了.
我在接受采访时被问到这个问题.我回答说这是一个有条件的结构,因为
那么我的回答是对还是错,有更好的答案吗?
他还问我说明break;语句与switch-case一起使用的原因,因为break;它只适用于循环.这个问题我无法回答.