@@ -692,12 +692,19 @@ VotingChartDialog::VotingChartDialog(QWidget *parent)
692
692
resTabWidget->addTab (m_chartView, tr (" Chart" ));
693
693
#endif
694
694
695
- answerTable_ = new QTableWidget (this );
696
- answerTable_->setColumnCount (3 );
697
- answerTable_->setRowCount (0 );
698
- answerTableHeader<<" Answer" <<" Shares" <<" Percentage" ;
699
- answerTable_->setHorizontalHeaderLabels (answerTableHeader);
695
+ answerModel_ = new QStandardItemModel ();
696
+ answerModel_->setColumnCount (3 );
697
+ answerModel_->setRowCount (0 );
698
+ answerModel_->setHeaderData (0 , Qt::Horizontal, tr (" Answer" ));
699
+ answerModel_->setHeaderData (1 , Qt::Horizontal, tr (" Shares" ));
700
+ answerModel_->setHeaderData (2 , Qt::Horizontal, " %" );
701
+
702
+ answerTable_ = new QTableView (this );
703
+ answerTable_->setModel (answerModel_);
700
704
answerTable_->horizontalHeader ()->setSectionResizeMode (QHeaderView::Stretch);
705
+ answerTable_->horizontalHeader ()->setSectionResizeMode (1 , QHeaderView::ResizeMode::ResizeToContents);
706
+ answerTable_->horizontalHeader ()->setSectionResizeMode (2 , QHeaderView::ResizeMode::ResizeToContents);
707
+ answerTable_->verticalHeader ()->setSectionResizeMode (QHeaderView::Fixed);
701
708
answerTable_->setEditTriggers ( QAbstractItemView::NoEditTriggers );
702
709
resTabWidget->addTab (answerTable_, tr (" List" ));
703
710
vlayout->addWidget (resTabWidget);
@@ -708,7 +715,8 @@ void VotingChartDialog::resetData(const VotingItem *item)
708
715
if (!item)
709
716
return ;
710
717
711
- answerTable_->setRowCount (0 );
718
+ answerModel_->setRowCount (0 );
719
+ answerTable_->sortByColumn (-1 , Qt::AscendingOrder);
712
720
answerTable_->setSortingEnabled (false );
713
721
714
722
#ifdef QT_CHARTS_LIB
@@ -723,29 +731,30 @@ void VotingChartDialog::resetData(const VotingItem *item)
723
731
url_->setText (" <a href=\" " +item->url_ +" \" >" +item->url_ +" </a>" );
724
732
answer_->setText (item->bestAnswer_ );
725
733
answer_->setVisible (!item->bestAnswer_ .isEmpty ());
726
- answerTable_ ->setRowCount (item->vectorOfAnswers_ .size ());
734
+ answerModel_ ->setRowCount (item->vectorOfAnswers_ .size ());
727
735
728
736
for (size_t y = 0 ; y < item->vectorOfAnswers_ .size (); y++)
729
737
{
730
738
const auto & responses = item->vectorOfAnswers_ ;
731
739
const QString answer = QString::fromStdString (responses[y].answer );
732
740
733
- answerTable_->setItem (y, 0 , new QTableWidgetItem (answer));
734
- QTableWidgetItem *iSharesItem = new QTableWidgetItem ();
735
- iSharesItem->setData (Qt::DisplayRole, QString::number (responses[y].shares , ' f' , 0 ));
741
+ QStandardItem *answerItem = new QStandardItem (answer);
742
+ answerItem->setData (answer);
743
+ answerModel_->setItem (y, 0 , answerItem);
744
+ QStandardItem *iSharesItem = new QStandardItem (QString::number (responses[y].shares , ' f' , 0 ));
745
+ iSharesItem->setData (responses[y].shares );
736
746
iSharesItem->setTextAlignment (Qt::AlignRight | Qt::AlignVCenter);
737
- answerTable_ ->setItem (y, 1 , iSharesItem);
738
- QTableWidgetItem *percentItem = new QTableWidgetItem ();
747
+ answerModel_ ->setItem (y, 1 , iSharesItem);
748
+ QStandardItem *percentItem = new QStandardItem ();
739
749
740
750
if (item->totalShares_ > 0 ) {
741
751
const double ratio = responses[y].shares / (double )item->totalShares_ ;
742
- percentItem->setData (Qt::DisplayRole, QString::number (ratio * 100 , ' f' , 2 ));
752
+ percentItem->setText (QString::number (ratio * 100 , ' f' , 2 ));
753
+ percentItem->setData (ratio * 100 );
743
754
percentItem->setTextAlignment (Qt::AlignRight | Qt::AlignVCenter);
744
755
}
745
756
746
- answerTable_->setItem (y, 2 , percentItem);
747
- answerTable_->horizontalHeader ()->setSectionResizeMode (1 , QHeaderView::ResizeMode::ResizeToContents);
748
- answerTable_->horizontalHeader ()->setSectionResizeMode (2 , QHeaderView::ResizeMode::ResizeToContents);
757
+ answerModel_->setItem (y, 2 , percentItem);
749
758
750
759
#ifdef QT_CHARTS_LIB
751
760
QtCharts::QPieSlice *slice = new QtCharts::QPieSlice (answer, responses[y].shares );
@@ -754,6 +763,7 @@ void VotingChartDialog::resetData(const VotingItem *item)
754
763
#endif
755
764
}
756
765
766
+ answerModel_->setSortRole (Qt::UserRole+1 );
757
767
answerTable_->setSortingEnabled (true );
758
768
}
759
769
0 commit comments