需求:在QSplitter类创建的窗口中点击右上角“关闭”按钮时弹出新对话框,这时声明Splitter类继承QSplitter类,覆盖closeEvent()。
因为很少去继承QSplitter类,一般都是直接用它原来的类。所以了解了更多关于继承类的方法。
在继承中,主要还是构造函数,构造函数各不相同,如QWidget的构造函数:
- class Content : public QFrame
- {
- Q_OBJECT
- public:
- Content(QWidget *parent=0, Qt::WindowFlags f1=0);
而QSplitter的构造函数却是:
- class Splitter : public QSplitter
- {
- Q_OBJECT
- public:
- Splitter( Qt::Orientation orientation=Qt::Horizontal, QWidget * parent = 0 );
- void closeEvent(QCloseEvent *);
- };
这里要注意的是构造函数中各参数只能初始化一次,如下所示,一般都是在.h文件中声明时初始化,在.cpp文件中就不要初始化了,否则会报错。error: default argument given for parameter 2 默认的参数只能给一次
- Splitter::Splitter( Qt::Orientation orientation, QWidget * parent )
- : QSplitter(orientation, parent)
- {
- }
- void Splitter::closeEvent(QCloseEvent *)
- {
- QDialog d;
- d.exec();
- }
这样就可以继承QSplitter类了,而且覆盖了closeEvent();
有点遗憾的是Qt中的友元和多继承一直没用过,希望以后有机会尝试。
阅读(2730) | 评论(0) | 转发(0) |