Как добавить виджет ComboBox в QTableView?



  • Всем привет. Во поля, где написано "Значение 1" мне нужно добавить элемент ComboBox.
    0_1558428493768_b4df7976-8a5b-4404-a5d1-5c1bed8c1f17-изображение.png

    Код совсем примитивен:

    #include "mainwindow.h"
    #include "ui_mainwindow.h"
    
    MainWindow::MainWindow(QWidget *parent) :
    	QMainWindow(parent),
    	ui(new Ui::MainWindow)
    {
    	ui->setupUi(this);
    
    	tableRow = 0;
    
    	model = new QStandardItemModel;
    	QStringList horizontalHeader;
    	horizontalHeader.append("Значение 1");
    	horizontalHeader.append("Значение 2");
    	horizontalHeader.append("Значение 3");
    	model->setHorizontalHeaderLabels(horizontalHeader);
    
    	ui->tbl_model->setModel(model);
    
    //	ui->tbl_model->resizeRowsToContents();
    //	ui->tbl_model->resizeColumnsToContents();
    
    	connect(ui->btn_addToList, &QPushButton::clicked, this, &MainWindow::addInfoToTable);
    	connect(ui->btn_removeFromList, &QPushButton::clicked, this, &MainWindow::removeInfoFromTable);
    
    	connect(model, &QStandardItemModel::rowsAboutToBeRemoved, this, &MainWindow::rowsRemoved);
    	connect(model, &QStandardItemModel::rowsAboutToBeInserted, this, &MainWindow::rowsInsert);
    }
    
    MainWindow::~MainWindow()
    {
    	delete ui;
    }
    
    //Добавление ячеек в таблицу
    void MainWindow::addInfoToTable()
    {
    	item1 = new QStandardItem("");
    	item2 = new QStandardItem("");
    	item3 = new QStandardItem("");
    
    	model->setItem(tableRow, 0, item1);
    	model->setItem(tableRow, 1, item2);
    	model->setItem(tableRow, 2, item3);
    
    	tableRow += 1;
    
    	ui->tbl_model->scrollToBottom();
    }
    
    //Удаление ячеек с таблицы
    void MainWindow::removeInfoFromTable()
    {
    
    	if(tableRow != 0)
    	{
    		model->removeRow(tableRow -= 1);
    	}
    }
    
    //Фукнция сработает при удалении поля
    void MainWindow::rowsRemoved()
    {
    	qDebug() << "Поле удалено";
    }
    
    //Функция сработает при добавлении поля
    void MainWindow::rowsInsert()
    {
    	qDebug() << "Поле вставлено";
    }
    

    Я искал варианты в интернете, но они или не подходили или очень сложны в реализации. Может есть ещё какие-то варианты?


Log in to reply
 

Looks like your connection to Qt Forum was lost, please wait while we try to reconnect.