如何在QPushButton中自动调整文本?

时间:2017-08-03 04:55:55

标签: c++ qt button qpushbutton

我有以下按钮

ui->setMaximumWidth(121);
ui->setMinimumWidth(121);
ui->setMaximumHeight(80);
ui->setMinimumHeight(80);
ui->pushButton->setStyleSheet   ("background-color: QLinearGradient(spread:pad x1: 0, y1: 0, x2: 0, y2: 1, stop: 0.0" + "#e5e4e2" + ",  stop: 0.4" + "#c0beb9" + ", stop: 1.0"+ "#e5e4e2"+");"
                                            "color: #868479; "
                                            "border-style: solid;"
                                            "border-style: solid;"
                                            "border-radius: 7;"
                                            "padding: 3px;"
                                            "padding-left: 5px;"
                                            "padding-right: 5px;"
                                            "border-color: #339;"
                                            "border-width: 1px;"
                                            "font:Bold;"
                                            "font-family:Georgia");

ui->pushButton->setText("Administración de Empresas");

但是“AdministracióndeEmpresas”是一个太长的词,然后我看不到完整的短语。

Ps:我不想手动操作,我希望我的应用检测大短语并自动调整

2 个答案:

答案 0 :(得分:0)

它应该自动适合按钮的文本。

确保以正确的方式使用QLayout。

如果您在代码中手动设置大小,可以使用sizeHint属性来获取正确的尺寸:

button->resize(button->sizeHint().width(), button->sizeHint().height());

Screenshot

答案 1 :(得分:0)

通常,这不是很好的实践。但是如果你需要在QPushButton上进行自动换行,你可以通过QLayout来实现:

QHBoxLayout *pLayout = new QHBoxLayout();
QLabel *pTextLabel = new QLabel();

pTextLabel->setText("This is a very very very long text");
pTextLabel->setAlignment(Qt::AlignCenter);
pTextLabel->setWordWrap(true);
pTextLabel->setTextInteractionFlags(Qt::NoTextInteraction);
pTextLabel->setMouseTracking(false);
pTextLabel->setSizePolicy(QSizePolicy::Expanding, QSizePolicy::Expanding);

pLayout->addWidget(pTextLabel);

MyButton->setText("");
MyButton->setLayout(pLayout);

但是你有自动调整大小QButton高度的问题