我需要一个按钮来填充或不填充QGridLayout
创建按钮时单元格提供的整个空间(对齐值是从文件加载的)。我用下面的代码简化了我的情况。在运行时,用户可以设置按钮的对齐方式 - 使其填充整个布局单元或很好地居中。只要按钮没有以指定的 NULL 对齐方式开始,它就可以工作。然而,我需要能够从 NULL 对齐开始(即按钮填充布局单元格的空间)。最初与 NULL 对齐时,设置了什么以使按钮锁定到 AlignVCenter 设置,我怎样才能让按钮返回到像使用空对齐以外的其他东西进行初始化一样?
我在 Ubuntu 12.04 LTS 上使用 Qt 4.8
#include <QPushButton>
#include <QGridLayout>
#include <QMainWindow>
#include <QApplication>
class MyWidget : public QWidget {
Q_OBJECT
QPushButton* m_pb;
QGridLayout* m_gl;
protected slots:
void pbClicked();
public:
MyWidget(QWidget* parent = 0);
};
MyWidget::MyWidget(QWidget* parent): QWidget(parent)
{
m_pb = new QPushButton(tr("push me"));
connect(m_pb, SIGNAL(clicked()), this, SLOT(pbClicked()));
m_gl = new QGridLayout();
//use (1) to see button expand when button is pressed
//use (2) to show that I can't start off expanded
/*1*/ //m_gl->addWidget(m_pb, 0, 0, Qt::AlignCenter); // creates desired effect
/*2*/ //m_gl->addWidget(m_pb, 0, 0, 0); //does not create desired effect
setLayout(m_gl);
}
void MyWidget::pbClicked(){
//will expand button so long as initial alignment is not NULL
m_gl->setAlignment(m_pb, 0);
}
int main(int argc, char *argv[]) {
QApplication app(argc, argv);
MyWidget* widget = new MyWidget();
QMainWindow window;
window.setCentralWidget(widget);
window.show();
return app.exec();
}
#include "main.moc"