Здравствуйте, romankr, Вы писали:
R>я думаю, логично было бы внимательно посмотреть SizePolicy у дефолтной кнопки ;) В данном случае вы немного перепутали, надо вот так:
R>R>setSizePolicy(QSizePolicy::Minimum, QSizePolicy::Fixed);
R>
Да, и правда, перепутал. Но этот вариант тоже не работает.
R>К тому же, есть вот еще один момент.
>> Т.е. был фиксирован по высоте, не сжимался бы по ширине меньше заданного размера,
R>минимальный размер можно выставит руками с помощью функции setMinimumSize().
Я сделал по другому — перегрузил
minimumSizeHint().
Проблема ещё в том, что sizeHint — у виджета меняется. И так как у кнопки, — когда её размер меняется (допустим при изменении текста), то менеджер компоновки под него подстраивается, — у меня сделать с моим виджетом не получается.
| | пример иллюстрирующий поведение кнопки, которое я хочу реализовать в своём виджете |
| | #ifndef WIDGET_H
#define WIDGET_H
#include <QWidget>
class QPushButton;
class Widget : public QWidget
{
Q_OBJECT
public:
Widget(QWidget *parent = 0);
private:
QPushButton *m_btn;
private slots:
void changeBtnText(QString text);
};
#endif // WIDGET_H
#include "widget.h"
#include <QVBoxLayout>
#include <QLineEdit>
#include <QPushButton>
#include <QVBoxLayout>
#include <QHBoxLayout>
Widget::Widget(QWidget *parent)
: QWidget(parent),
m_btn(new QPushButton("btn"))
{
QPushButton *btn2 = new QPushButton("btn #2");
QLineEdit *lineEdit = new QLineEdit;
connect(lineEdit, SIGNAL(textChanged(QString)), SLOT(changeBtnText(QString)));
QHBoxLayout *btnLay = new QHBoxLayout;
btnLay->addWidget(m_btn);
btnLay->addWidget(btn2,1);
QVBoxLayout *mainLay = new QVBoxLayout;
mainLay->addLayout(btnLay);
mainLay->addWidget(lineEdit);
setLayout(mainLay);
}
void Widget::changeBtnText(QString text)
{
m_btn->setText(text);
}
|
| | |
Да, надо видимо поковырять код QPushButton в исходниках библиотеки, но толком не понимая принципа сложновато это делать, для этого ещё QLayout и иже с ним ковырять придёться.
Может кто-нибудь уже знает решение моей проблемы?
Моя же задача такая: пользователь открывает картинку из файла, она должна в моём виджете отобразиться, а мой виджет под неё подстроиться. Мой виджет в QHBoxLayout скомпонован с панелью управления. Сейчас мой виджет не меняет размеров и приходиться ручками окно маштабировать, чтобы картинку увидеть.