Qt布局不起作用

时间:2017-11-06 13:14:34

标签: c++ qt

我想在我的应用中将按钮对齐到窗口的右边框。我已经尝试使用布局但它不起作用 - 按钮仍然在左边框旁边。 这里代码:

MainWindow::MainWindow()
{

this->setStyleSheet(
                    "QMenu {background-color: #555555; color: #EEEEEE; selection-background-color: #222222; border: 1px solid #222222;}"
                    "QMenuBar {background-color: #555555; color: #EEEEEE;}"
                    "QMenuBar::Item:selected {background-color: #333333; color:#EEEEEE;}"
                    "QMenuBar::Item:pressed {background-color: #111111;}"
                    "QToolBar {background: #555555; border-top: 1px solid #222222;}"
                    "MainWindow {background: black;}"
                    "QToolButton { background-color: transparent; border: none; }"
                    );

initButtons();
}

void MainWindow::initButtons()
{
QPushButton *playButton = new QPushButton(this); 
    playButton->setAutoFillBackground(true);
    playButton->setStyleSheet("background-color: rgb(40, 40, 40);");
    playButton->setToolTip("Play");
    this->layout()->addWidget(playButton);
    this->layout()->setAlignment(playButton, Qt::AlignRight);
}

有人可以告诉我,如果我做得对吗?为什么它不起作用?

1 个答案:

答案 0 :(得分:2)

您需要先添加水平布局

然后从左到右添加小部件

如果您想添加空间,可以使用spacer item

QWidget * poCentralWidget = new QWidget(this);
QHBoxLayout * poHLayout = new QHBoxLayout;
poCentralWidget->setLayout(poHLayout);

// Spacer item
QWidget * poSpacerItem = new QWidget(this);

poSpacerItem->setSizePolicy(
            QSizePolicy::Minimum,QSizePolicy::Maximum);

// Add spacer item
poHLayout->addWidget(poSpacerItem);
// Add your button to the right side.
poHLayout->addWidget(playButton);

this->setCentralWidget(poCentralWidget);