Qt主窗口没有重新绘制MDI区域

时间:2017-08-03 11:40:51

标签: qt qmdiarea

我有一个应用程序,它有一个主窗口,其MDI区域使用整个窗口。当应用程序打开时,它没有最大化。如果我打开子窗口然后关闭它,窗口的幽灵仍会显示。如果我打开另一个子窗口然后将其移动到MDI区域,则只能在鬼魂所在的区域中获得窗口的副本。 如果我打开主窗口,然后最大化它,打开孩子并最大化它,这个问题就消失了。然后a可以将主窗口设置为原始大小,打开和关闭子窗口,移动它们并正确地重新绘制背景。
有什么办法可以解决这个问题吗? 调用mdi窗口:

void PriceAnalysisTool::on_actionImport_triggered()
{
    importprocess = new ImportProcess(working, printer, ui->mdiArea);

    importprocess->show();
}

子窗口的初始部分:

ImportProcess::ImportProcess(DataBase *d, QPrinter *p, QWidget *parent) : QMdiSubWindow(parent), ui(new Ui::ImportProcess)
{
  ui->setupUi(this);

显示相同行为的测试程序:
主窗口:

#ifndef MAINWINDOW_H
#define MAINWINDOW_H
#include <QMainWindow>
#include <QDebug>
#include "subwindow.h"

namespace Ui {
  class MainWindow;
}
class MainWindow : public QMainWindow
{
  Q_OBJECT
public:
  explicit MainWindow(QWidget *parent = 0);
  ~MainWindow();
private slots:
  void on_actionOpen_Window_triggered();
private:
  Ui::MainWindow *ui;
  SubWindow *subwindow;
};

#endif // MAINWINDOW_H

主窗口.cpp

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

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

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


void MainWindow::on_actionOpen_Window_triggered()
{
   subwindow = new SubWindow(ui->mdiArea);
   subwindow->show();
}

subwindo.h

#ifndef SUBWINDOW_H
#define SUBWINDOW_H

#include <QWidget>
#include <QMdiSubWindow>

namespace Ui {
  class SubWindow;
}

class SubWindow : public QMdiSubWindow
{
  Q_OBJECT

public:
  explicit SubWindow(QWidget *parent = 0);
  ~SubWindow();

private:
  Ui::SubWindow *ui;
};

#endif // SUBWINDOW_H

subwindw.cpp

#include "subwindow.h"
#include "ui_subwindow.h"

SubWindow::SubWindow(QWidget *parent) : QMdiSubWindow(parent), ui(new Ui::SubWindow)
{
  ui->setupUi(this);
}

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

的main.cpp

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

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

  return a.exec();
}

主窗口的ui只有一个MDI,而一个菜单只有一个调用子窗口的项目。子窗口是一个没有任何内容的小部件。

{
  QSqlQuery query;
  query.exec("drop table C"+QString::number(markTime.toSecsSinceEpoch()));
  query.exec("drop table C"+QString::number(markTime.toSecsSinceEpoch())+"T");
  query.exec("drop table C"+QString::number(markTime.toSecsSinceEpoch())+"S");
  query.exec("drop table C"+QString::number(markTime.toSecsSinceEpoch())+"F");
  delete ui;
}

0 个答案:

没有答案