• 10757阅读
  • 6回复

[提问]QT主窗口程序在linux下编译运行为何不显示菜单栏? [复制链接]

上一主题 下一主题
离线starter
 
只看楼主 倒序阅读 楼主  发表于: 2012-07-30
关键词: QT4求助
写了一个基于QMainWindow的应用程序,自己添加了一些菜单项和工具栏等,在windows下面运行一切正常,但放到linux 下重新编译运行却看不到菜单栏,这是为何啊?
离线benbenmajia

只看该作者 1楼 发表于: 2012-07-31
代码,不发代码怎么看
安然.....
离线starter
只看该作者 2楼 发表于: 2012-07-31
就是新建一个基于QMainWindow的QT应用程序,然后在QT设计师上添加几个菜单项以及工具栏,没有添加任何功能,我用的是QT4.7.3
离线starter
只看该作者 3楼 发表于: 2012-07-31
/*头文件 mainwndapp.h********/

#ifndef MAINWNDAPP_H
#define MAINWNDAPP_H

#include <QtGui/QMainWindow>
#include "ui_mainwndapp.h"

class MainWndApp : public QMainWindow , public Ui::MainWndAppClass
{
    Q_OBJECT

public:
    MainWndApp(QWidget *parent = 0, Qt::WFlags flags = 0);
    ~MainWndApp();
    void loadFile(QString filename);
public slots:
    void openFileDlg();

private:
    Ui::MainWndAppClass ui;
};

#endif // MAINWNDAPP_H
离线starter
只看该作者 4楼 发表于: 2012-07-31
源文件

#include "mainwndapp.h"
#include <QtGui>

MainWndApp::MainWndApp(QWidget *parent, Qt::WFlags flags)
    : QMainWindow(parent, flags)
{
    setupUi(this);
    //创建上下文菜单
    addAction(action);
    addAction(action_2);
    addAction(action_3);
    setContextMenuPolicy(Qt::ActionsContextMenu);
    connect(action_2,SIGNAL(triggered()),this,SLOT(openFileDlg()));
}

MainWndApp::~MainWndApp()
{

}

void MainWndApp::openFileDlg()
{
    QString fileName = QFileDialog::getOpenFileName(this);
    if(!fileName.isEmpty())
    {
        if(textEdit->document()->isEmpty())
        {
            loadFile(fileName);
        }
        else
        {
            MainWndApp *newWin = new MainWndApp();
            newWin->show();
            newWin->loadFile(fileName);
        }
    }
}

void MainWndApp::loadFile(QString filename)
{
    QFile file(filename);
    if(file.open(QIODevice::ReadOnly | QIODevice::Text))
    {
        QTextStream textStream(&file);
        while(!textStream.atEnd())
        {
            textEdit->append(textStream.readLine());
        }
    }
}
离线starter
只看该作者 5楼 发表于: 2012-07-31
主函数

#include "mainwndapp.h"
#include <QtGui/QApplication>

int main(int argc, char *argv[])
{
    QApplication a(argc, argv);
    MainWndApp w;
    w.show();
    return a.exec();
}
离线starter
只看该作者 6楼 发表于: 2012-07-31
ui编译后生成的文件ui_mainwndapp.h

#ifndef UI_MAINWNDAPP_H
#define UI_MAINWNDAPP_H

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

QT_BEGIN_NAMESPACE

class Ui_MainWndAppClass
{
public:
    QAction *action;
    QAction *action_2;
    QAction *action_3;
    QAction *action_4;
    QAction *action_6;
    QAction *action_7;
    QWidget *centralWidget;
    QVBoxLayout *verticalLayout;
    QTextEdit *textEdit;
    QToolBar *mainToolBar;
    QStatusBar *statusBar;
    QMenuBar *menuBar;
    QMenu *menu;
    QMenu *menu_2;
    QMenu *menu_3;

    void setupUi(QMainWindow *MainWndAppClass)
    {
        if (MainWndAppClass->objectName().isEmpty())
            MainWndAppClass->setObjectName(QString::fromUtf8("MainWndAppClass"));
        MainWndAppClass->resize(480, 232);
        action = new QAction(MainWndAppClass);
        action->setObjectName(QString::fromUtf8("action"));
        QIcon icon;
        icon.addFile(QString::fromUtf8(":/images/easyicon_cn_32.png"), QSize(), QIcon::Normal, QIcon::Off);
        action->setIcon(icon);
        action_2 = new QAction(MainWndAppClass);
        action_2->setObjectName(QString::fromUtf8("action_2"));
        QIcon icon1;
        icon1.addFile(QString::fromUtf8(":/images/linguist-fileopen.png"), QSize(), QIcon::Normal, QIcon::Off);
        action_2->setIcon(icon1);
        action_3 = new QAction(MainWndAppClass);
        action_3->setObjectName(QString::fromUtf8("action_3"));
        QIcon icon2;
        icon2.addFile(QString::fromUtf8(":/images/linguist-filesave.png"), QSize(), QIcon::Normal, QIcon::Off);
        action_3->setIcon(icon2);
        action_4 = new QAction(MainWndAppClass);
        action_4->setObjectName(QString::fromUtf8("action_4"));
        QIcon icon3;
        icon3.addFile(QString::fromUtf8(":/images/linguist-editfind.png"), QSize(), QIcon::Normal, QIcon::Off);
        action_4->setIcon(icon3);
        action_6 = new QAction(MainWndAppClass);
        action_6->setObjectName(QString::fromUtf8("action_6"));
        QIcon icon4;
        icon4.addFile(QString::fromUtf8(":/images/linguist-editcopy.png"), QSize(), QIcon::Normal, QIcon::Off);
        action_6->setIcon(icon4);
        action_7 = new QAction(MainWndAppClass);
        action_7->setObjectName(QString::fromUtf8("action_7"));
        QIcon icon5;
        icon5.addFile(QString::fromUtf8(":/images/linguist-editpaste.png"), QSize(), QIcon::Normal, QIcon::Off);
        action_7->setIcon(icon5);
        centralWidget = new QWidget(MainWndAppClass);
        centralWidget->setObjectName(QString::fromUtf8("centralWidget"));
        verticalLayout = new QVBoxLayout(centralWidget);
        verticalLayout->setSpacing(6);
        verticalLayout->setContentsMargins(11, 11, 11, 11);
        verticalLayout->setObjectName(QString::fromUtf8("verticalLayout"));
        textEdit = new QTextEdit(centralWidget);
        textEdit->setObjectName(QString::fromUtf8("textEdit"));

        verticalLayout->addWidget(textEdit);

        MainWndAppClass->setCentralWidget(centralWidget);
        mainToolBar = new QToolBar(MainWndAppClass);
        mainToolBar->setObjectName(QString::fromUtf8("mainToolBar"));
        MainWndAppClass->addToolBar(Qt::TopToolBarArea, mainToolBar);
        statusBar = new QStatusBar(MainWndAppClass);
        statusBar->setObjectName(QString::fromUtf8("statusBar"));
        MainWndAppClass->setStatusBar(statusBar);
        menuBar = new QMenuBar(MainWndAppClass);
        menuBar->setObjectName(QString::fromUtf8("menuBar"));
        menuBar->setGeometry(QRect(0, 0, 480, 19));
        menu = new QMenu(menuBar);
        menu->setObjectName(QString::fromUtf8("menu"));
        QSizePolicy sizePolicy(QSizePolicy::Fixed, QSizePolicy::Fixed);
        sizePolicy.setHorizontalStretch(0);
        sizePolicy.setVerticalStretch(0);
        sizePolicy.setHeightForWidth(menu->sizePolicy().hasHeightForWidth());
        menu->setSizePolicy(sizePolicy);
        menu_2 = new QMenu(menuBar);
        menu_2->setObjectName(QString::fromUtf8("menu_2"));
        menu_3 = new QMenu(menuBar);
        menu_3->setObjectName(QString::fromUtf8("menu_3"));
        MainWndAppClass->setMenuBar(menuBar);

        mainToolBar->addAction(action);
        mainToolBar->addAction(action_2);
        mainToolBar->addAction(action_3);
        mainToolBar->addAction(action_4);
        mainToolBar->addAction(action_6);
        mainToolBar->addAction(action_7);
        menuBar->addAction(menu->menuAction());
        menuBar->addAction(menu_2->menuAction());
        menuBar->addAction(menu_3->menuAction());
        menu->addAction(action);
        menu->addAction(action_2);
        menu->addAction(action_3);
        menu_2->addAction(action_4);
        menu_2->addAction(action_6);
        menu_2->addAction(action_7);

        retranslateUi(MainWndAppClass);

        QMetaObject::connectSlotsByName(MainWndAppClass);
    } // setupUi

    void retranslateUi(QMainWindow *MainWndAppClass)
    {
        MainWndAppClass->setWindowTitle(QApplication::translate("MainWndAppClass", "MainWndApp", 0, QApplication::UnicodeUTF8));
        action->setText(QApplication::translate("MainWndAppClass", "\346\226\260\345\273\272", 0, QApplication::UnicodeUTF8));
#ifndef QT_NO_STATUSTIP
        action->setStatusTip(QApplication::translate("MainWndAppClass", "\346\226\260\345\273\272\344\270\200\344\270\252\346\226\207\346\234\254", 0, QApplication::UnicodeUTF8));
#endif // QT_NO_STATUSTIP
        action->setShortcut(QApplication::translate("MainWndAppClass", "Ctrl+N", 0, QApplication::UnicodeUTF8));
        action_2->setText(QApplication::translate("MainWndAppClass", "\346\211\223\345\274\200", 0, QApplication::UnicodeUTF8));
        action_3->setText(QApplication::translate("MainWndAppClass", "\344\277\235\345\255\230", 0, QApplication::UnicodeUTF8));
        action_4->setText(QApplication::translate("MainWndAppClass", "\346\237\245\346\211\276", 0, QApplication::UnicodeUTF8));
        action_6->setText(QApplication::translate("MainWndAppClass", "\345\244\215\345\210\266", 0, QApplication::UnicodeUTF8));
        action_7->setText(QApplication::translate("MainWndAppClass", "\347\262\230\350\264\264", 0, QApplication::UnicodeUTF8));
        menu->setTitle(QApplication::translate("MainWndAppClass", "\346\226\207\344\273\266", 0, QApplication::UnicodeUTF8));
        menu_2->setTitle(QApplication::translate("MainWndAppClass", "\347\274\226\350\276\221", 0, QApplication::UnicodeUTF8));
        menu_3->setTitle(QApplication::translate("MainWndAppClass", "\345\270\256\345\212\251", 0, QApplication::UnicodeUTF8));
    } // retranslateUi

};

namespace Ui {
    class MainWndAppClass: public Ui_MainWndAppClass {};
} // namespace Ui

QT_END_NAMESPACE

#endif // UI_MAINWNDAPP_H
快速回复
限100 字节
 
上一个 下一个