找回密码
 立即注册
收起左侧

程序无法编译(error LNK2001)

1
回复
4640
查看
[复制链接]
累计签到:33 天
连续签到:1 天
来源: 2014-3-8 19:09:44 显示全部楼层 |阅读模式
我建立了一个空的Qt项目,所有程序都在一个cpp文件中,如果在定义类是不加Q_OBJECT时,程序可以运行,但是槽无法使用,加入Q_OBJECT后,编译时错误显示如下,网上查了一下说是moc的问题,但不知怎么解决:


本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
回复

使用道具 举报

累计签到:33 天
连续签到:1 天
2014-3-8 19:11:40 显示全部楼层
代码如下:
  1. #include<QtGui>
  2. #include<QTextCodec>
  3. #include<QCloseEvent>
  4. #include<QString>
  5. #include<QDebug>
  6. #include<QSystemTrayIcon>
  7. #include<QMainWindow>
  8. #include<QMenu>


  9. class myMainWindow: public QMainWindow
  10. {
  11.     Q_OBJECT

  12. public:
  13.     myMainWindow();
  14. private:
  15.     QSystemTrayIcon *trayIcon;
  16.     QAction *minimizeAction;
  17.     QAction *restoreAction;
  18.     QAction *quitAction;
  19.     QMenu   *trayIconMenu;

  20. private slots:
  21.    // void trayiconActivated(QSystemTrayIcon::ActivationReason reason);
  22.     void onSystemTrayIconClicked(QSystemTrayIcon::ActivationReason reason);
  23. protected:
  24.     void closeEvent(QCloseEvent *event);
  25. };

  26. myMainWindow::myMainWindow()
  27. {
  28.     //创建托盘图标
  29.     QIcon icon = QIcon("D:/studytool/Qt/workspace/myTray1/tengweitw.jpg");
  30.     trayIcon = new QSystemTrayIcon(this);
  31.     trayIcon->setIcon(icon);
  32.     trayIcon->setToolTip(tr("托盘测试"));

  33.     trayIcon->show();

  34.     //弹出气泡提示,但是运行时显示不了。
  35.     trayIcon->showMessage(titlec,textc,QSystemTrayIcon::Information,5000);

  36.     //添加单/双击鼠标相应
  37.     connect(trayIcon,SIGNAL(activated(QSystemTrayIcon::ActivationReason)),this,SLOT(onSystemTrayIconClicked(QSystemTrayIcon::ActivationReason)));

  38.     //创建监听行为
  39.     minimizeAction = new QAction(tr("最小化 (&I)"), this);
  40.     connect(minimizeAction, SIGNAL(triggered()), this, SLOT(hide()));
  41.     restoreAction = new QAction(tr("还原 (&R)"), this);
  42.     connect(restoreAction, SIGNAL(triggered()), this, SLOT(showNormal()));
  43.     quitAction = new QAction(tr("退出 (&Q)"), this);
  44.     connect(quitAction, SIGNAL(triggered()), qApp, SLOT(quit()));

  45.     //创建右键弹出菜单
  46.     trayIconMenu = new QMenu(this);
  47.     trayIconMenu->addAction(minimizeAction);
  48.     trayIconMenu->addAction(restoreAction);
  49.     trayIconMenu->addSeparator();
  50.     trayIconMenu->addAction(quitAction);
  51.     trayIcon->setContextMenu(trayIconMenu);
  52. }




  53. void myMainWindow::onSystemTrayIconClicked(QSystemTrayIcon::ActivationReason reason)
  54. {
  55.     switch (reason)
  56.     {
  57.     case QSystemTrayIcon::Trigger:
  58.         //单击托盘图标
  59.     case QSystemTrayIcon::DoubleClick:
  60.         //双击托盘图标
  61. //        this->showNormal();
  62. //        this->raise();
  63.         qDebug()<<"ok";
  64.         this->setWindowState(Qt::WindowActive);
  65.         this->show();
  66.         break;
  67.     default:
  68.         break;
  69.     }
  70. }




  71. void myMainWindow::closeEvent(QCloseEvent *event)
  72. {
  73.   if(trayIcon->isVisible())
  74.   {
  75.       hide();
  76.       event->ignore();
  77.   }
  78. }

  79. int main(int argc, char *argv[])
  80. {
  81.     QApplication a(argc, argv);
  82.      QTextCodec::setCodecForTr(QTextCodec::codecForLocale());
  83.     myMainWindow w;
  84.     w.show();

  85.     return a.exec();
  86. }

  87. //#include "moc_MainWindow.cpp"
复制代码
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

公告
可以关注我们的微信公众号yafeilinux_friends获取最新动态,或者加入QQ会员群进行交流:190741849、186601429(已满) 我知道了