##// END OF EJS Templates
Uses Qt::SizeHintRole to set column width and height
Alexandre Leroux -
r278:97758c973a6d
parent child
Show More
@@ -1,57 +1,65
1 1 #include <Variable/VariableController.h>
2 2 #include <Variable/VariableInspectorWidget.h>
3 3 #include <Variable/VariableModel.h>
4 4
5 5 #include <ui_VariableInspectorWidget.h>
6 6
7 7 #include <QSortFilterProxyModel>
8 8
9 9 #include <SqpApplication.h>
10 10
11 11 Q_LOGGING_CATEGORY(LOG_VariableInspectorWidget, "VariableInspectorWidget")
12 12
13 13 VariableInspectorWidget::VariableInspectorWidget(QWidget *parent)
14 14 : QWidget{parent}, ui{new Ui::VariableInspectorWidget}
15 15 {
16 16 ui->setupUi(this);
17 17
18 18 // Sets model for table
19 19 auto sortFilterModel = new QSortFilterProxyModel{this};
20 20 sortFilterModel->setSourceModel(sqpApp->variableController().variableModel());
21 21
22 22 ui->tableView->setModel(sortFilterModel);
23 23
24 // Fixes column sizes
25 auto model = ui->tableView->model();
26 const auto count = model->columnCount();
27 for (auto i = 0; i < count; ++i) {
28 ui->tableView->setColumnWidth(
29 i, model->headerData(i, Qt::Horizontal, Qt::SizeHintRole).toSize().width());
30 }
31
24 32 // Connection to show a menu when right clicking on the tree
25 33 ui->tableView->setContextMenuPolicy(Qt::CustomContextMenu);
26 34 connect(ui->tableView, &QTableView::customContextMenuRequested, this,
27 35 &VariableInspectorWidget::onTableMenuRequested);
28 36 }
29 37
30 38 VariableInspectorWidget::~VariableInspectorWidget()
31 39 {
32 40 delete ui;
33 41 }
34 42
35 43 void VariableInspectorWidget::onTableMenuRequested(const QPoint &pos) noexcept
36 44 {
37 45 auto selectedIndex = ui->tableView->indexAt(pos);
38 46 if (selectedIndex.isValid()) {
39 47 // Gets the model to retrieve the underlying selected variable
40 48 auto model = sqpApp->variableController().variableModel();
41 49 if (auto selectedVariable = model->variable(selectedIndex.row())) {
42 50 QMenu tableMenu{};
43 51
44 52 // Emit a signal so that potential receivers can populate the menu before displaying it
45 53 emit tableMenuAboutToBeDisplayed(&tableMenu, selectedVariable);
46 54
47 55 if (!tableMenu.isEmpty()) {
48 56 tableMenu.exec(mapToGlobal(pos));
49 57 }
50 58 }
51 59 }
52 60 else {
53 61 qCCritical(LOG_VariableInspectorWidget())
54 62 << tr("Can't display menu : invalid index (%1;%2)")
55 63 .arg(selectedIndex.row(), selectedIndex.column());
56 64 }
57 65 }
General Comments 0
You need to be logged in to leave comments. Login now