RybaSG

Qt tablewidget

Sep 24th, 2019
61
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 4.12 KB | None | 0 0
  1. #include "mainwindow.h"
  2. #include "ui_mainwindow.h"
  3. #include <QList>
  4. #include <QDebug>
  5.  
  6. MainWindow::MainWindow(QWidget *parent)
  7.     : QMainWindow(parent)
  8.     , ui(new Ui::MainWindow)
  9. {
  10.     ui->setupUi(this);
  11.     ui->tableWidget->setColumnCount(4);
  12.     ui->tableWidget->setStyleSheet("QTableView {selection-background-color: gray;}");
  13.     ui->tableWidget->horizontalHeader()->setSectionResizeMode(QHeaderView::Stretch);
  14. //    ui->tableWidget->setSelectionBehavior(QAbstractItemView::SelectRows);
  15.     ui->tableWidget->setHorizontalHeaderItem(0, new QTableWidgetItem("Place"));
  16.     ui->tableWidget->setHorizontalHeaderItem(1, new QTableWidgetItem("Parameter"));
  17.     ui->tableWidget->setHorizontalHeaderItem(2, new QTableWidgetItem("email"));
  18.     ui->tableWidget->setHorizontalHeaderItem(3, new QTableWidgetItem("message"));
  19.  
  20.  
  21. }
  22.  
  23. MainWindow::~MainWindow()
  24. {
  25.     delete ui;
  26. }
  27.  
  28. void MainWindow::on_deleteButton_clicked()
  29. {
  30. //    comboList.erase(
  31. //    std::remove_if(comboList.begin(), comboList.end(), [&](ComboList const & obj)
  32. //    {
  33. //        return obj.cb == ui->tableWidget->; // instead current row it should be static row
  34. //    }), comboList.end());
  35. //    qDebug() << "Usuwam: " << ui->tableWidget->currentRow();
  36.     ui->tableWidget->removeRow(ui->tableWidget->currentRow());
  37. }
  38.  
  39. void MainWindow::on_addButton_clicked()
  40. {
  41.     ComboList temp;
  42.     QComboBox *cBoxPlaces;
  43.     cBoxPlaces = new QComboBox;
  44.     cBoxPlaces->addItem("Pokoj");
  45.     cBoxPlaces->addItem("Kuchnia");
  46.     cBoxPlaces->addItem("Garaz");
  47.  
  48.     temp.cb = cBoxPlaces;
  49.     temp.row = ui->tableWidget->rowCount();
  50.     qDebug() << "Dodaje: " << ui->tableWidget->rowCount();
  51.     comboList.push_back(temp);
  52.  
  53.     QComboBox *cBoxParams;
  54.     cBoxParams = new QComboBox;
  55.     cBoxParams->addItem("Temperatura");
  56.     cBoxParams->addItem("Wilgotnosc");
  57.     cBoxParams->addItem("Cisnienie");
  58.  
  59.     temp.cb = cBoxParams;
  60.     temp.row = ui->tableWidget->rowCount();
  61.     comboList.push_back(temp);
  62.     ui->tableWidget->insertRow(ui->tableWidget->rowCount());
  63.  
  64.     for(int i = 0; i < ui->tableWidget->columnCount(); i++)
  65.     {
  66.         if(i == 0)
  67.             ui->tableWidget->setCellWidget(ui->tableWidget->rowCount()-1, i, cBoxPlaces);
  68.         else if(i == 1)
  69.             ui->tableWidget->setCellWidget(ui->tableWidget->rowCount()-1, i, cBoxParams);
  70.         else
  71.             ui->tableWidget->setItem(ui->tableWidget->rowCount()-1, i, new QTableWidgetItem("fill"));
  72.     }
  73. }
  74.  
  75. void MainWindow::on_activateButton_clicked()
  76. {
  77.     qDebug() << "Aktywuje: " << ui->tableWidget->currentRow();
  78.     if(ui->tableWidget->currentRow() >= 0)
  79.     {
  80.         for(int i = 0; i < ui->tableWidget->columnCount(); i++)
  81.         {
  82.             if(i < 2)
  83.             {
  84.                 ui->tableWidget->cellWidget(ui->tableWidget->currentRow(), i)->setStyleSheet("QComboBox { background-color: green; }");
  85.                 ui->tableWidget->cellWidget(ui->tableWidget->currentRow(), i)->setEnabled(false);
  86.             }
  87.             else
  88.             {
  89.                 ui->tableWidget->item(ui->tableWidget->currentRow(), i)->setBackground(Qt::green);
  90.                 ui->tableWidget->item(ui->tableWidget->currentRow(), i)->
  91.                         setFlags(ui->tableWidget->item(ui->tableWidget->currentRow(), i)->flags() & ~Qt::ItemIsEditable);
  92.             }
  93.         }
  94.     }
  95. }
  96.  
  97. void MainWindow::on_deactivateButton_clicked()
  98. {
  99.     if(ui->tableWidget->currentRow() >= 0)
  100.     {
  101.         for(int i = 0; i < ui->tableWidget->columnCount(); i++)
  102.         {
  103.             if(i < 2)
  104.             {
  105.                 ui->tableWidget->cellWidget(ui->tableWidget->currentRow(), i)->setStyleSheet("QComboBox { background-color: red; }");
  106.                 ui->tableWidget->cellWidget(ui->tableWidget->currentRow(), i)->setEnabled(true);
  107.             }
  108.             else
  109.             {
  110.                 ui->tableWidget->item(ui->tableWidget->currentRow(), i)->setBackground(Qt::red);
  111.                 ui->tableWidget->item(ui->tableWidget->currentRow(), i)->
  112.                         setFlags(ui->tableWidget->item(ui->tableWidget->currentRow(), i)->flags() ^ Qt::ItemIsEditable);
  113.             }
  114.         }
  115.     }
  116. }
Add Comment
Please, Sign In to add comment