0

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」ウィンドウの境界が考慮されていないため、ライトシフトがあります。

ここに画像の説明を入力

親ウィンドウ全体のサイズにアクセスできたら...

誰かが私を助けることができれば

4

1 に答える 1