main.cpp でこのように中央に配置するメイン ウィンドウがあります。
int main(int argc, char *argv[])
{
QApplication app(argc, argv);
QMainWindow *qmain = new QMainWindow;
Ui_MainWindow ui;
ui.setupUi(qmain);
QRect r = qmain->geometry();
r.moveCenter(QApplication::desktop()->availableGeometry().center());
qmain->setGeometry(r);
qmain->show();
return app.exec();
}
この「qmain」メイン ウィンドウで、別の QMainWindow を作成し、2 つのウィンドウをくっつけようとします (言い方がわかりません)。実際には、1 つ目の右上隅を 2 つ目の左上隅に配置したいと考えています。このために、次の Ui_MainWindow のメンバー関数を使用します。
void Ui_MainWindow::generate_IC()
{
qmenu = new QMainWindow;
DiskMenu = new Ui_DiskGalMenu;
DiskMenu->setupUi(qmenu);
setInitialDiskMenuPosition(qmenu, this);
qmenu->show();
}
および setInitialDiskMenuPosition :
void Ui_MainWindow::setInitialDiskMenuPosition(QMainWindow *MainWindow, Ui_MainWindow *parent)
{
QSize size = parent->widget->size();
QDesktopWidget* desktop = QApplication::desktop();
int width = desktop->width();
int height = desktop->height();
int mw = size.width();
int mh = size.height();
int right = (width/2) + (mw/2);
int top = (height/2) - (mh/2);
MainWindow->move(right, top);
}
しかし、問題は、centralwidget のサイズ「parent-> widget->size()」がウィジェットのサイズのみを返し、「qmain」親ウィンドウ全体ではないため、必要なものが正確に得られないことです。以下に示すように、「qmain」ウィンドウの境界が考慮されていないため、ライトシフトがあります。
親ウィンドウ全体のサイズにアクセスできたら...
誰かが私を助けることができれば