免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 2749 | 回复: 4
打印 上一主题 下一主题

KDE编程问题? 《linux程序设计3》中第17章 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2008-01-13 21:58 |只看该作者 |倒序浏览
编译   错误提示如下:
  
KDEMenu.cpp:18:   error:   cannot   convert   ‘KApplication’   to  ‘const   QObject*’   for   argument   ‘1’   to   ‘KAction*  KStdAction::quit(const   QObject*,   const   char*,  KActionCollection*,   const   char*)’
  
  
文件源码是:
KDEMenu.h   :
  
#include <kmainwindow.h>  
  
class   KDEMenu   :   public   KMainWindow
{
        Q_OBJECT
  
        public:
                KDEMenu(const   char   *name);
  
        private   slots:
                void   newFile();
                void   aboutApp();
};
  

KDEMenu.cpp

  
#include"KDEMenu.h"
  
#include <kapp.h>  
#include <kaction.h>  
#include <kstdaccel.h>  
#include <kmenubar.h>  
#include <kaboutdialog.h>  
  
KDEMenu::KDEMenu(const   char   *   name)   :   KMainWindow(   0L,   name   )
{
        KAction   *new_file   =   new   KAction("&New",
                                         "filenew",
                                         KStdAccel::key(KStdAccel::New),
                                         this,
                                         SLOT(newFile()),
                                         this);
  
        KAction   *quit_action   =   KStdAction::quit(KApplication::KApplication(),   SLOT(quit()),   actionCollection());
  
        KAction   *help_action   =   KStdAction::aboutApp(this,   SLOT(aboutApp()),   actionCollection());
        QPopupMenu   *file_menu   =   new   QPopupMenu;
        QPopupMenu   *help_menu   =   new   QPopupMenu;
  
        menuBar()-> insertItem("&File",   file_menu);
        menuBar()-> insertItem("&Help",   help_menu);
  
        new_file-> plug(file_menu);
        file_menu-> insertSeparator();
        quit_action-> plug(file_menu);
  
        help_action-> plug(help_menu);
  
        new_file-> plug(toolBar());
        quit_action-> plug(toolBar());
}
  
void   KDEMenu::newFile()
{
}
  
void   KDEMenu::aboutApp()
{
        KAboutDialog   *about   =   new   KAboutDialog(this,   "dialog");
        about-> setAuthor(QString("A.N.Author"),   QString("an@email.net"),
                           QString("http://url.com"),QString("work"));
        //about-> setMaintainer("A.Maintainer");
        about-> setVersion("1.0");
  
        about-> show();
}
  
int   main(int   argc,   char   **argv)
{
        KApplication   app(   argc,   argv,   "cdapp");
        KDEMenu   *window   =   new   KDEMenu("bob");
  
        app.setMainWidget(window);
        window-> show();
  
        return   app.exec();
}
  
  
menu.pro:
  
TARGET   =   kdemenu
MOC_DIR   =   moc
OBJECT_DIR   =   obj
INCLUDEPATH   =   /usr/include/kde
  
INCLUDEPATH   +=   /opt/kde3/include
INCLUDEPATH   +=   /usr/lib/qt3/include
QMAKE_LIBDIR_X11   +=   /opt/kde3/lib
  
QMAKE_LIBDIR_X11   +=   /usr/lib
QMAKE_LIBS_X11   +=   -lkdeui   -lkdecore
SOURCES   =   KDEMenu.cpp
HEADERS   =   KDEMenu.h
  
  
编译命令如下:
  
$qmake   menu.pro   -o   Makefile
$make
  

大家帮忙看看怎么办???
      谢谢!!

论坛徽章:
0
2 [报告]
发表于 2008-01-14 17:56 |只看该作者

论坛徽章:
0
3 [报告]
发表于 2008-01-16 01:30 |只看该作者
试试:
KAction *quit_action = KStdAction::quit(KApplication::KApplication(), SLOT(quit()), actionCollection());
改为
KAction *quit_action = KStdAction::quit(KApplication::kApplication(), SLOT(quit()), actionCollection());

论坛徽章:
0
4 [报告]
发表于 2008-01-16 17:40 |只看该作者
原帖由 mymtom 于 2008-1-16 01:30 发表
试试:
KAction *quit_action = KStdAction::quit(KApplication::KApplication(), SLOT(quit()), actionCollection());
改为
KAction *quit_action = KStdAction::quit(KApplication::kApplication(), SLOT(q ...





这两句有区别吗???  你看看 是不是你输入错误啦!!!

论坛徽章:
0
5 [报告]
发表于 2008-01-16 20:09 |只看该作者
晕!! 谢谢!!!  我瞎眼啦!!!! 没看出来!!!
谢谢mymtom
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP