• 3253阅读
  • 5回复

窗体和对话框先后的问题。 [复制链接]

上一主题 下一主题
离线smaller
 

只看楼主 倒序阅读 楼主  发表于: 2015-04-07

#ifndef MAINWINDOW_H
#define MAINWINDOW_H

#include <QMainWindow>
#include <QMessageBox>

namespace Ui {
    class MainWindow;
}

class MainWindow : public QMainWindow
{
    Q_OBJECT

public:
    explicit MainWindow(QWidget *parent = 0);
    ~MainWindow();
public:
    void dis();

private:
    Ui::MainWindow *ui;
};

#endif // MAINWINDOW_H


#include "mainwindow.h"
#include "ui_mainwindow.h"

MainWindow::MainWindow(QWidget *parent) :
    QMainWindow(parent),
    ui(new Ui::MainWindow)
{
    ui->setupUi(this);
    dis();
}

MainWindow::~MainWindow()
{
    delete ui;
}

void MainWindow::dis()
{
        QMessageBox::information(this,tr("ONE"),tr("Hello World!"));
}

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

int main(int argc, char *argv[])
{
    QApplication a(argc, argv);
    MainWindow w;
    w.show();

    return a.exec();
}

代码如上。我想让QMessagebox的消息等到窗口创建以后再显示出来,由于是新手,现在无从下手了。希望朋友们提点一下,我需要怎么做呢?
离线bran_lee

只看该作者 1楼 发表于: 2015-04-07
w.show();后面调用w.dis();不就行了嘛,为啥非要放构造函数里
当你只有锤子时,你看什么都像是钉子!
离线smaller

只看该作者 2楼 发表于: 2015-04-07
回 bran_lee 的帖子
bran_lee:w.show();后面调用w.dis();不就行了嘛,为啥非要放构造函数里 (2015-04-07 15:25) 

我尝试了 放在.show()后面调用函数,函数里是一句QMessageBox的消息输出,点击上面的ok后,就把updata_pup_1窗口给结束了。下面是主要的代码:
        updata_pup updata_pup_1;
        updata_pup_1.setWindowFlags(Qt::Dialog|Qt::FramelessWindowHint);
        
        updata_pup_1.show();
        updata_pup_1.F();


f()
{
    QMessageBox::information(this,tr("ERROR::2"),tr("升级文件未找到"));
}
离线youji104

只看该作者 3楼 发表于: 2015-04-07
updata_pup  类是继承QDialog??
是的话:
updata_pup_1.show();
改成:updata_pup_1.exec(); 试试
Bule
离线smaller

只看该作者 4楼 发表于: 2015-04-08
回 youji104 的帖子
youji104:updata_pup  类是继承QDialog??
是的话:
updata_pup_1.show();
改成:updata_pup_1.exec(); 试试 (2015-04-07 16:57) 

显示窗体 就是使用的 updata_pup_1.exec()
我需要把dis()函数放在哪里呢?不至于dis()的QMessage早出现在窗体之前呢?
离线youji104

只看该作者 5楼 发表于: 2015-04-09

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

int main(int argc, char *argv[])
{
    QApplication a(argc, argv);
    MainWindow w;
    w.show();
    w.dis();
    return a.exec();
}
这就能实现了呀!怎么会有问题呢。如果还是无法解决。把源码发我邮箱看看2774396920@qq.com
Bule
快速回复
限100 字节
 
上一个 下一个