• 8812阅读
  • 6回复

QT4。2。2,,帮忙看看为什么不响应菜单消息!! [复制链接]

上一主题 下一主题
离线suisou
 

只看楼主 倒序阅读 楼主  发表于: 2007-01-12
QT4。2。2,,帮忙看看为什么不响应菜单消息!!
小弟从VC转QT,,,4。2。2初学,现在用DESIGNER设计出一窗口,然后按照论坛上看篇<学习QT4初步编程>(真的很感谢那位兄台),做,编译没问题,,t窗口菜单都出来了,可是就 是点菜单,无响应,请大家帮忙看看问题出在哪?




mywindow.h


/********************************************************************************
** Form generated from reading ui file 'mywindow.ui'
**
** Created: Thu Jan 11 17:39:10 2007
**     by: Qt User Interface Compiler version 4.2.2
**
** WARNING! All changes made in this file will be lost when recompiling ui file!
********************************************************************************/

#ifndef UI_MYWINDOW_H
#define UI_MYWINDOW_H

#include <QtCore/QVariant>
#include <QtGui/QAction>
#include <QtGui/QApplication>
#include <QtGui/QButtonGroup>
#include <QtGui/QMainWindow>
#include <QtGui/QMenu>
#include <QtGui/QMenuBar>
#include <QtGui/QStatusBar>
#include <QtGui/QTextEdit>
#include <QtGui/QWidget>
#include <QFileDialog>

class My_MainWindow:public QMainWindow
{
public:
  QAction *actionNew;
  QAction *actionOpen;
  QAction *actionExit;
  QAction *actionCopy;
  QAction *actionPast;
  QAction *actionHelp;
  QWidget *centralwidget;
  QTextEdit *textEdit;
  QMenuBar *menubar;
  QMenu *menuFile;
  QMenu *menuHelp;
  QMenu *menuEdit;
  QStatusBar *statusbar;

  My_MainWindow();

  void retranslateUi(QMainWindow *MainWindow);
 
public slots:
  void openfile();
  void message();
 

};



#endif // UI_MYWINDOW_H





mywindow.cpp



#include "mywindow.h"
#include <QDialog>
#include <QMessageBox>


  My_MainWindow::My_MainWindow()
  {
  this->setObjectName(QString::fromUtf8("MainWindow"));
  actionNew = new QAction(this);
  actionNew->setObjectName(QString::fromUtf8("actionNew"));
  actionOpen = new QAction(this);
  actionOpen->setObjectName(QString::fromUtf8("actionOpen"));
  actionExit = new QAction(this);
  actionExit->setObjectName(QString::fromUtf8("actionExit"));
  actionCopy = new QAction(this);
  actionCopy->setObjectName(QString::fromUtf8("actionCopy"));
  actionPast = new QAction(this);
  actionPast->setObjectName(QString::fromUtf8("actionPast"));
  actionHelp = new QAction(this);
  actionHelp->setObjectName(QString::fromUtf8("actionHelp"));
  centralwidget = new QWidget(this);
  centralwidget->setObjectName(QString::fromUtf8("centralwidget"));
  textEdit = new QTextEdit(centralwidget);
  textEdit->setObjectName(QString::fromUtf8("textEdit"));
  textEdit->setGeometry(QRect(0, 0, 801, 551));
  this->setCentralWidget(centralwidget);
  menubar = new QMenuBar(this);
  menubar->setObjectName(QString::fromUtf8("menubar"));
  menubar->setGeometry(QRect(0, 0, 800, 28));
  menuFile = new QMenu(menubar);
  menuFile->setObjectName(QString::fromUtf8("menuFile"));
  menuHelp = new QMenu(menubar);
  menuHelp->setObjectName(QString::fromUtf8("menuHelp"));
  menuEdit = new QMenu(menubar);
  menuEdit->setObjectName(QString::fromUtf8("menuEdit"));
  this->setMenuBar(menubar);
  statusbar = new QStatusBar(this);
  statusbar->setObjectName(QString::fromUtf8("statusbar"));
  this->setStatusBar(statusbar);

  menubar->addAction(menuFile->menuAction());
  menubar->addAction(menuEdit->menuAction());
  menubar->addAction(menuHelp->menuAction());
  menuFile->addAction(actionNew);
  menuFile->addAction(actionOpen);
  menuFile->addAction(actionExit);
  menuHelp->addAction(actionHelp);
  menuEdit->addAction(actionCopy);
  menuEdit->addAction(actionPast);

  retranslateUi(this);

  QSize size(800, 600);
  size = size.expandedTo(this->minimumSizeHint());
  this->resize(size);


  // QMetaObject::connectSlotsByName(this);
  connect(actionOpen,SIGNAL(triggered()),this,SLOT(openfile()));
  connect(actionNew,SIGNAL(triggered(true)),this,SLOT(message()));
  } // setupUi

  void My_MainWindow::retranslateUi(QMainWindow *MainWindow)
  {
  MainWindow->setWindowTitle(QApplication::translate("MainWindow", "MainWindow", 0, QApplication::UnicodeUTF8));
  actionNew->setText(QApplication::translate("MainWindow", "New", 0, QApplication::UnicodeUTF8));
  actionOpen->setText(QApplication::translate("MainWindow", "Open", 0, QApplication::UnicodeUTF8));
  actionExit->setText(QApplication::translate("MainWindow", "Exit", 0, QApplication::UnicodeUTF8));
  actionCopy->setText(QApplication::translate("MainWindow", "Copy", 0, QApplication::UnicodeUTF8));
  actionPast->setText(QApplication::translate("MainWindow", "Past", 0, QApplication::UnicodeUTF8));
  actionHelp->setText(QApplication::translate("MainWindow", "Help", 0, QApplication::UnicodeUTF8));
  menuFile->setTitle(QApplication::translate("MainWindow", "File", 0, QApplication::UnicodeUTF8));
  menuHelp->setTitle(QApplication::translate("MainWindow", "Help", 0, QApplication::UnicodeUTF8));
  menuEdit->setTitle(QApplication::translate("MainWindow", "Edit", 0, QApplication::UnicodeUTF8));
  } // retranslateUi


  void My_MainWindow::openfile()
  {
  QString fileName = QFileDialog::getOpenFileName(this, tr("Open File"),
                                "/home/",
                                tr("Images (*.txt *.xpm *.jpg)"));

  }

  void My_MainWindow::message()
  {
  int ret = QMessageBox::warning(this, tr("My Application"),
            tr("The document has been modified.\n"
              "Do you want to save your changes?"),
            QMessageBox::Save | QMessageBox::Discard
            | QMessageBox::Cancel,
            QMessageBox::Save);




  }
[ 此贴被XChinux在2007-01-12 14:34重新编辑 ]
离线XChinux

只看该作者 1楼 发表于: 2007-01-12
Qt4.0的时候Designer不能设计菜单,所以得自己写代码来实现,现在的Qt4.2已经能直接用Qt Designer来设计出菜单了,然后自己要实现的就是写菜单对应的Action的on_actionXXXX_triggered()这个slot函数了。
二笔 openSUSE Vim N9 BB10 XChinux@163.com 网易博客 腾讯微博
承接C++/Qt、Qt UI界面、PHP及预算报销系统开发业务
离线suisou

只看该作者 2楼 发表于: 2007-01-12
搞了很久,,百度和狗狗都没有找到相关内容,,,
QT的帮助也没有相关内容,,,

郁闷ING
离线suisou

只看该作者 3楼 发表于: 2007-01-12
麻烦版主指出我的程序中的错误,,,

麻烦你编译一下我的代码,,看看错误在哪?

这样才是一个学习的过程,,,

其实QT的例子中有这样的类似程序,,,我编译过它的源码,可以响应消息,,但是我就不明白我的为什么不行?

初学者很困惑,因为版本之间的差异,很多工作手工来完成,难免漏掉,,
离线XChinux

只看该作者 4楼 发表于: 2007-01-12
没有加OBJECT宏。
这种写法本身就有问题。这个只是描述界面,但没有实体。
二笔 openSUSE Vim N9 BB10 XChinux@163.com 网易博客 腾讯微博
承接C++/Qt、Qt UI界面、PHP及预算报销系统开发业务
离线suisou

只看该作者 5楼 发表于: 2007-01-12
#include <QObject>



class My_MainWindow: public QMainWindow
{
   
    Q_OBJECT
   




就是这样解决的,,谢谢


我其实希望高手们做一些最简单的模版下载,,给初学者参考,,,
离线leonzhou
只看该作者 6楼 发表于: 2009-11-19
楼主搞好了吗?
快速回复
限100 字节
 
上一个 下一个