如何设置 QPushButton 的精确大小?

LmT*_*oon 5 c++ user-interface qt qt5

我有 SignatureEditorForm 类,它继承了 QDialog 类:

SignatureEditorForm(QWidget* parent_widget) : QDialog(parent_widget)
{
    resize(SIGNATURE_EDITOR_SIZE);
    setWindowTitle(QString("Signature Editor"));
    setWindowFlags(Qt::Window | Qt::MSWindowsFixedSizeDialogHint | Qt::WindowCloseButtonHint);
    setModal(true);
    {
        QPushButton* const button = new QPushButton(QString("<"), this);
        const QSize BUTTON_SIZE = QSize(22, 22);
        button->resize(BUTTON_SIZE);
    }
}
Run Code Online (Sandbox Code Playgroud)

它包含 QPushButton,它具有大小(宽度:22,高度:22)和“<”标题。我有这个小部件的图片(SignatureEditorForm)。QPushButton 有大小(宽:20,高:20)。如何设置按钮的精确大小?

PS 我尝试使用 setMinimumSize,但它没有效果。

在此处输入图片说明

PPS 这一行 button->setStyleSheet("border: 1px solid black; background: white"); 产生这样的效果(精确的尺寸)

在此处输入图片说明

IGH*_*HOR 7

QWidget::setFixedSize  
Run Code Online (Sandbox Code Playgroud)

这种方法和其他方法可以很好地设置 QWidget 的确切大小。

但是您的问题不在 Qt 中,而在 Windows 样式中。

小部件的实际大小是准确的,但 Windows 在边框上为动画保留了空间,因此它看起来比您预期的要小。

要修复它,您需要像这样编写自己的样式:

button->setStyleSheet("border: 1px solid black; background: white");
Run Code Online (Sandbox Code Playgroud)

或使用此处提供的任何样式:

http://doc.qt.io/qt-5/gallery.html

  • 也许它有效,但由于样式的原因,看起来不像 22x22。尝试 66x66 或 11x11 尺寸,它看起来不同吗? (2认同)