Как центрировать CentralWidget в QMainWindow?C++

Программы на C++. Форум разработчиков
Ответить Пред. темаСлед. тема
Anonymous
 Как центрировать CentralWidget в QMainWindow?

Сообщение Anonymous »

Центрирование кажется простым, но сейчас я застрял. Я не могу центрировать CentralWidget, поскольку виджет не расширяется, но, насколько я понимаю, виджет в этом случае не должен расширяться (иначе мои шахматные плитки были бы нарисованы посередине, и в конечном итоге виджет шахматной доски содержал бы гораздо больше, чем должен).

Код: Выделить всё

#include 
#include 
#include 
#include 
#include 
#include 
#include 
#include 

class ChessboardWidget : public QWidget{
public:
explicit ChessboardWidget(QWidget *parent) : QWidget(parent) {
}
void paintEvent(QPaintEvent *event) override{
this->setPalette(Qt::white);
this->setAutoFillBackground(true);
QPainter painter(this);

bool black = true;
int tileSize = std::ceil(this->height() / 8.0);
for(int i = 0; i < 8; i++){
for(int j = 0; j < 8; j++){
int y = i * tileSize;
int x = j * tileSize;
painter.fillRect(x, y, tileSize, tileSize, black ? Qt::black : Qt::white);
black = !black;
}
black = !black;
}
}

void resizeEvent(QResizeEvent *event) override{
resize(this->size().height(), this->size().height());

QWidget::resizeEvent(event);
}
private:
};

class MainWindow : public QMainWindow {
public:
MainWindow() {
auto *window = new QWidget();
auto *chess = new ChessboardWidget(window);

setCentralWidget(chess);
setWindowTitle("Chessboard Example");
show();
setSizePolicy(QSizePolicy::Expanding, QSizePolicy::Expanding);
this->setPalette(Qt::red);
this->setAutoFillBackground(true);

}
};

int main(int argc, char *argv[]) {
QApplication app(argc, argv);

MainWindow window;

return QApplication::exec();
}

Я пробовал использовать макеты, но для работы им нужно полностью заполнить пространство. Есть ли способ центрировать виджет, не создавая еще один виджет, который заполнял бы пространство, и не использовать макет?

Подробнее здесь: https://stackoverflow.com/questions/783 ... mainwindow
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение
  • PyQt5: как центрировать QDialog внутри центрального виджета QMainWindow
    Гость » » в форуме Python
    0 Ответы
    68 Просмотры
    Последнее сообщение Гость
  • Как центрировать QMainWindow
    Anonymous » » в форуме C++
    0 Ответы
    23 Просмотры
    Последнее сообщение Anonymous
  • Удаление виджетов из CentralWidget PyQt6
    Anonymous » » в форуме Python
    0 Ответы
    23 Просмотры
    Последнее сообщение Anonymous
  • Почему не происходит сбоя при назначении виджета-члена в качестве центрального виджета в QMainWindow
    Anonymous » » в форуме C++
    0 Ответы
    84 Просмотры
    Последнее сообщение Anonymous
  • Изменение родительского элемента QOpenGLWidget с QMainWindow на QMdiSubWindow не работает должным образом.
    Anonymous » » в форуме C++
    0 Ответы
    53 Просмотры
    Последнее сообщение Anonymous

Вернуться в «C++»