zhukx2010 发表于 2012-10-27 17:56:57

关于QT中某些类的问题

大家好,我最近在参考Linux窗口程序设计—Qt4精彩实例分析上面的例子,在menu下添加按钮时用到了addAction,文章中用的方式是addAction(fileOpenAction),其中fileOpenAction是QAction*类型的,出现的问题是:qmenu.h中声明的addAction压根就没有以QAction*类型做参数的?这是什么原因啊?
我使用的是天嵌提供的QT4.5的qt creator做的,谢谢!

TQ-lkp 发表于 2012-10-27 18:00:36

本帖最后由 TQ-lkp 于 2012-10-27 18:01 编辑

qmenu.h中的定义
void addAction ( QAction * action )
例子:
openAct = new QAction(QIcon(":/images/open.png"), tr("&Open..."), this);
   openAct->setShortcuts(QKeySequence::Open);
   openAct->setStatusTip(tr("Open an existing file"));
   connect(openAct, SIGNAL(triggered()), this, SLOT(open()));

   fileMenu->addAction(openAct);
   fileToolBar->addAction(openAct);

zhukx2010 发表于 2012-10-27 18:20:48

TQ-lkp 发表于 2012-10-27 18:00 static/image/common/back.gif
qmenu.h中的定义
void addAction ( QAction * action )
例子:


但是我在这个头文件下没有找到这个定义啊,跟版本有关系吗?我用的都是天嵌提供的 啊

zhukx2010 发表于 2012-10-27 18:32:58

TQ-lkp 发表于 2012-10-27 18:00 static/image/common/back.gif
qmenu.h中的定义
void addAction ( QAction * action )
例子:


我在我的这个qmenu.h文件中找到的关于addAction的定义就下面几个:

QAction *addAction(const QString &text);
    QAction *addAction(const QIcon &icon, const QString &text);
    QAction *addAction(const QString &text, const QObject *receiver, const char* member, const QKeySequence &shortcut = 0);
    QAction *addAction(const QIcon &icon, const QString &text, const QObject *receiver, const char* member, const QKeySequence &shortcut = 0);
没有你说的这个:(

TQ-lkp 发表于 2012-10-29 11:12:52

本帖最后由 TQ-lkp 于 2012-10-29 11:14 编辑

qmenu.h

#ifdef Q_NO_USING_KEYWORD
    inline void addAction(QAction *action) { QWidget::addAction(action); }
#else
    using QWidget::addAction;
#endif
    QAction *addAction(const QString &text);
    QAction *addAction(const QIcon &icon, const QString &text);
    QAction *addAction(const QString &text, const QObject *receiver, const char* member, const QKeySequence &shortcut = 0);
    QAction *addAction(const QIcon &icon, const QString &text, const QObject *receiver, const char* member, const QKeySequence &shortcut = 0);


测试通过的例子:
       QMenu *file = menuBar()->addMenu(trUtf8("文件"));
      QAction *newAct = new QAction(trUtf8("新建"), this);
      newAct->setShortcuts(QKeySequence::New);
      newAct->setStatusTip(trUtf8("新建文件"));
      connect(newAct, SIGNAL(triggered()), this, SLOT(newFile()));
      file->addAction(newAct);
页: [1]
查看完整版本: 关于QT中某些类的问题