Как задать размер виджета в ячейке QTableWidget

128
05 января 2020, 15:50

Помогите решить проблему.

В создаваемой таблице QTableWidget вставляю в ячейку кнопку. Кодом, которым она описывается, ниже. Все работает, но!

Форма с данной таблицей создается в конструкторе другой (главной) формы и, как я подозреваю, берет от туда некорректные размеры потому что кнопка в ячейке располагается по центру но не занимает весь размер ячейки, а приблизительно половину.

Никак не получается заставить ее растягиваться на всю ячейку. Заранее спасибо!

QWidget *QOperatorList::createButtonWidget(QString s) const
{
    QWidget* wgt = new QWidget;
    QHBoxLayout* l = new QHBoxLayout;
    QPushButton* btn = new QPushButton( s );
    connect( btn, SIGNAL( clicked( bool ) ), SLOT( onBtnClicked() ) );
    l->setMargin( 1 );
    l->setSpacing(1);
    l->addWidget( btn );
    l->setAlignment(btn, Qt::AlignCenter);
//    l->setContentsMargins(0,0,0,0);
//    l->addStretch();
    wgt->setLayout( l );
    return wgt;
}

и, собственно вставка самой кнопки:

ui->tableWidget->setCellWidget(i, 3, createButtonWidget("O"));
Answer 1

Надо указать принцип заполнения родительского пространства:

//...
QPushButton* btn = new QPushButton();
btn->setSizePolicy(QSizePolicy::Expanding, QSizePolicy::Expanding);
//...

И для wgt (QWidget*) сделать тоже самое

wgt->setSizePolicy(QSizePolicy::Expanding, QSizePolicy::Expanding);
READ ALSO
Обработка событий в OpenGL C++

Обработка событий в OpenGL C++

Хочу написать программу, которая будет строить треугольник СерпинскогоМне нужно получить координаты первого треугольника, но я не хочу...

140
Можно ли вставлять элементы в vector в цикле

Можно ли вставлять элементы в vector в цикле

Есть последовательность из чисел, надо перед каждым отрицательным вставить 0 Я записал начальную последовательность в vector и потом хотел...

112
Декомпрессор gzip на C++, библиотека zlib.h

Декомпрессор gzip на C++, библиотека zlib.h

Доброго времени суток!

154
Как записать wchar_t в файл?

Как записать wchar_t в файл?

Вывод в терминал я понял как делать

133