Каждый раз, когда я раскрываю окно QMdiSubwindow, фокус-виджет продвигается вперед.Как я могу предотвратить продвижение виджета фокуса в QGridLayout при отмене максимизации QMdiSubwindow?Это было протестировано с QMake 3.1 и QT 5.9.5
tl; dr Я пытаюсь написать приложение Mdi, в котором один QMdiSubwindow содержит кнопки для запуска других QMdiSubwindows.Окно QMdiSubwindow, имеющее кнопки, перемещает фокусированную кнопку, когда я ее максимизирую, что нежелательно.
![enter image description here](https://i.stack.imgur.com/eHdfY.png)
// tabtest.h
#include <QtGui>
#include <QMainWindow>
class QMdiArea;
class MainWindow : public QMainWindow {
Q_OBJECT
public:
MainWindow();
private:
QMdiArea* mdiArea;
};
// tabtest.cpp
#include <QApplication>
#include <QPushButton>
#include <QMdiArea>
#include <QMdiSubWindow>
#include <QScrollArea>
#include <QGridLayout>
#include "tabtest.h"
MainWindow::MainWindow() {
mdiArea = new QMdiArea;
setCentralWidget(mdiArea);
QScrollArea* area = new QScrollArea;
area->setWidgetResizable(true);
QWidget* client = new QWidget;
area->setWidget(client);
QGridLayout* layout = new QGridLayout();
client->setLayout(layout);
for (int i=0; i<300; ++i) {
char buffer[20];
sprintf(buffer, " %d ", i);
QPushButton* button = new QPushButton(buffer);
button->setStyleSheet("QPushButton:focus { background-color: DarkGray; }");
layout->addWidget(button, i/5, i%5);
if (i == 1)
button->setFocus();
}
QMdiSubWindow* subWindow = mdiArea->addSubWindow(area);
subWindow->setAttribute(Qt::WA_DeleteOnClose);
subWindow->showMaximized();
subWindow->show();
}
int main(int argc, char *argv[]) {
QApplication app(argc, argv);
MainWindow mainWin;
mainWin.show();
return app.exec();
}
qmake -project "QT += widgets" "QT += printsupport" "CONFIG += debug"
qmake
make