Chinaunix首页 | 论坛 | 博客
  • 博客访问: 290639
  • 博文数量: 23
  • 博客积分: 491
  • 博客等级: 下士
  • 技术积分: 612
  • 用 户 组: 普通用户
  • 注册时间: 2011-11-29 19:57
文章分类

全部博文(23)

文章存档

2013年(1)

2012年(22)

我的朋友

分类: C/C++

2012-06-25 20:31:38

需求:在QSplitter类创建的窗口中点击右上角“关闭”按钮时弹出新对话框,这时声明Splitter类继承QSplitter类,覆盖closeEvent()。
因为很少去继承QSplitter类,一般都是直接用它原来的类。所以了解了更多关于继承类的方法。
 
 
 
在继承中,主要还是构造函数,构造函数各不相同,如QWidget的构造函数:

点击(此处)折叠或打开

  1. class Content : public QFrame
  2. {
  3.     Q_OBJECT
  4. public:
  5.     Content(QWidget *parent=0, Qt::WindowFlags f1=0);

而QSplitter的构造函数却是:

点击(此处)折叠或打开

  1. class Splitter : public QSplitter

  2. {

  3.     Q_OBJECT

  4. public:

  5.     Splitter( Qt::Orientation orientation=Qt::Horizontal, QWidget * parent = 0 );

  6.     void closeEvent(QCloseEvent *);

  7. };

这里要注意的是构造函数中各参数只能初始化一次,如下所示,一般都是在.h文件中声明时初始化,在.cpp文件中就不要初始化了,否则会报错。error: default argument given for parameter 2 默认的参数只能给一次
 

点击(此处)折叠或打开

  1. Splitter::Splitter( Qt::Orientation orientation, QWidget * parent )
  2.     : QSplitter(orientation, parent)


  3. {

  4. }

  5. void Splitter::closeEvent(QCloseEvent *)
  6. {
  7.     QDialog d;
  8.     d.exec();
  9. }
这样就可以继承QSplitter类了,而且覆盖了closeEvent();
 
有点遗憾的是Qt中的友元和多继承一直没用过,希望以后有机会尝试。
 
阅读(2691) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~