Ich versuche, meine Unterfenster vertikal in der QMdiArea anzuordnen. Ich habe viele Beispiele online gesehen und alle taten das gleiche wie ich hier.QMdiArea gibt die falsche Höhe und Breite zurück
Ich habe zwei TextEdits, die vertikal gekachelt werden müssen, beide die Hälfte des Bildschirms abdecken. Im Konstruktor des MainWindow füge ich also die zwei textEdits als Unterfenster zur qMdiArea hinzu und finde dann die Höhe und Breite der qMdiArea, teile die Höhe durch 2 und verändere die Größe des Unterfensters. Bitte beachten Sie den folgenden Code.
Mein mainwindow.cpp
#include "mainwindow.h"
#include "ui_mainwindow.h"
MainWindow::MainWindow(QWidget *parent) :
QMainWindow(parent),
ui(new Ui::MainWindow)
{
ui->setupUi(this);
this->showMaximized();
qMdiArea = new QMdiArea();
qTextEdit1 = new QTextEdit();
qTextEdit2 = new QTextEdit();
setCentralWidget(qMdiArea);
qMdiArea->adjustSize();
qMdiArea->addSubWindow(qTextEdit1);
qMdiArea->addSubWindow(qTextEdit2);
QPoint position(0, 0);
foreach (QMdiSubWindow *window, qMdiArea->subWindowList())
{
QRect rect(0, 0, qMdiArea->width(), qMdiArea->height()/qMdiArea->subWindowList().count());
window->setGeometry(rect);
window->move(position);
position.setY(position.y() + window->height());
}
}
MainWindow::~MainWindow()
{
delete ui;
}
Mein window.h
#ifndef MAINWINDOW_H
#define MAINWINDOW_H
#include <QMainWindow>
#include <QMdiArea>
#include <QTextEdit>
#include <QPoint>
#include <QMdiSubWindow>
#include <QRect>
namespace Ui {
class MainWindow;
}
class MainWindow : public QMainWindow
{
Q_OBJECT
public:
explicit MainWindow(QWidget *parent = 0);
~MainWindow();
private:
Ui::MainWindow *ui;
QMdiArea *qMdiArea;
QTextEdit *qTextEdit1;
QTextEdit *qTextEdit2;
};
#endif // MAINWINDOW_H
und mein Haupt File:
#include "mainwindow.h"
#include <QApplication>
int main(int argc, char *argv[])
{
QApplication a(argc, argv);
MainWindow w;
w.show();
return a.exec();
}
Aber es ist nicht wie erwartet geschieht. Das Fenster belegt nur einen Teil des Bildschirms, obwohl sie vertikal gekachelt sind. Meine Bildschirmauflösung 1920x1200
Vielen Dank. Ich habe wirklich gekämpft, weil ich nicht in der Lage bin, Höhe und Breite zu erreichen. –