QMdiAreaのサブウィンドウを垂直に配置しようとしています。私はオンラインでたくさんの例を見て、私はここでやっているのと同じことをしていました。QMdiAreaが間違った高さと幅を返す
私は2つのテキストエディットを持っています。これは、画面の半分を覆うように縦に並べる必要があります。したがって、MainWindowのコンストラクタでは、2つのtextEditsをsubWindowとしてqMdiAreaに追加し、qMdiAreaの高さと幅を求め、高さを2で割り、サブウィンドウのサイズを変更します。以下のコードをご覧ください。
マイ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;
}
マイ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
と私のメインファイル:
#include "mainwindow.h"
#include <QApplication>
int main(int argc, char *argv[])
{
QApplication a(argc, argv);
MainWindow w;
w.show();
return a.exec();
}
しかし、期待通りのが起きていません。ウィンドウは、垂直にタイル表示されていますが、画面の一部を占めるだけです。私の画面解像度が1920×1200のmdiArea
ありがとうございます。私はなぜ高さと幅を得ることができないのか、本当に苦労していました。 –