c++ - 如何设置 QPushButton 的精确大小?

标签 c++ qt user-interface 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);
    }
}

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

附言我尝试使用 setMinimumSize,但没有效果。

enter image description here

附言这一行 button->setStyleSheet("border: 1px solid black; background: white");给出这样的效果(精确尺寸)

enter image description here

最佳答案

QWidget::setFixedSize  

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

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

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

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

button->setStyleSheet("border: 1px solid black; background: white");

或使用此处可用的任何样式:

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

关于c++ - 如何设置 QPushButton 的精确大小?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36063103/

相关文章:

c++ - 将特定数组元素的地址传递给函数

c++ - 在 n LSBits 之后清除 m 位的掩码

qt - 如何在QT设计时将QGridLayout分为行和列?

c++ - 在进入事件时填充 QRect

user-interface - 裸对象模式(和 UI 自动生成)的 future

c++ - find_if 不适用于 const_iterator

C++ std::thread 结合 C pthread_mutex_t

c++ - 访问模板化基类的模板化方法

java - 为什么 LinearLayout 子 getWidth 方法返回 0?

python - PyQt4 QAbstractListModel - 仅显示第一个数据小部件