c++ - Qt布局不工作

标签 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);
}

谁能告诉我我这样做对不对?为什么它不起作用?

最佳答案

需要先添加水平布局

然后按从左到右的顺序添加小部件

如果要加空格,可以用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);

关于c++ - Qt布局不工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47137858/

相关文章:

c++ - 使用 auto 对仿函数进行类型推导

c++ - Qt TCP 套接字 - 写入超过 15 个字节

c++ - 显示器之间的Qt自定义无框窗口中的绘画问题

c++ - C++ GRPC客户端与golang服务器连接错误

c++ - Sublime Text 3 C++ 构建系统

qt - 每次需要重新绘制时,如何在像素图中抓取 qwidget/render?

c++ - 映射多变量/层系统的泛化

qt - 使用 PyQt5 在 Python3 中的当前屏幕大小

c++ - 无法在Qt中编译,表示错误1和错误2

c++ - Cocos2d-x 如何启用/禁用 ccTouchMoved 事件?