Управляйте конкретным QItemDelegate в табличной модели и соединяйте его сигнал со слотом - PullRequest
0 голосов
/ 01 июня 2019

Я занимаюсь разработкой программы для контроля продаж и управления запасами в конкретном магазине, я создал элемент делегата, который добавляет QDoubleSpinBox к таблице, служащей для изменения количества товаров в корзине, мне нужно как-то установить максимальное количество каждый SpinBox в зависимости от количества товара на складе, и необходимо подключить valueChange (), чтобы обновить итоговую цену.

Делегат таблицы

QWidget *TableDelegate::createEditor(QWidget *parent,const QStyleOptionViewItem & option ,const QModelIndex & index ) const
{
    return new QDoubleSpinBox(parent);
}

NovaVenda

NovaVenda::NovaVenda(QWidget *parent) :
    QDialog(parent),
    ui(new Ui::NovaVenda)
{
    ui->setupUi(this);


    static QStringList headers = {"Código", "Nome", "Quantidade"};

    modeloTabela = new QStandardItemModel(0, 3);
    modeloTabela->setHorizontalHeaderLabels(headers);

    ui->tvCarrinho->setModel(modeloTabela);
    ui->tvCarrinho->horizontalHeader()->setSectionResizeMode(QHeaderView::Stretch);
    ui->tvCarrinho->horizontalHeader()->setSectionResizeMode(1, QHeaderView::ResizeToContents);

    ui->tvCarrinho->setItemDelegateForColumn(2, new TableDelegate());

    // Lista os códigos e nomes para que os campos o auto complete
    QVector<Produtos> produtos = Produtos::listarProdutos();
    if(!produtos.isEmpty()){

        QStringList nomes, codigos;

        for(int i = 0; i < produtos.size(); i++){

            nomes.insert(i, produtos[i].nome());
            codigos.insert(i, produtos[i].codigoVenda());

        }

        nomesCompleter = new QCompleter(nomes);
        codigoCompleter = new QCompleter(codigos);

    }

    ui->leInput->setCompleter(codigoCompleter);

    codBarraValidator = new QRegExpValidator(QRegExp("^[0-9]*$"));

}

Result

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...