/
WidgetBox.cpp
65 lines (52 loc) · 1.54 KB
/
WidgetBox.cpp
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
#include "WidgetBox.h"
#include "PageWidget.h"
#include <qstandarditemmodel.h>
#include <qlistview.h>
#include <qboxlayout.h>
#include <qpushbutton.h>
#include <qmessagebox.h>
#include "StringConstants.h"
WidgetBox::WidgetBox(QWidget * parent):QDialog(parent)
{
setFixedSize(200,250);
setModal(true);
setWindowTitle(tr("Select Widgets"));
_model = new QStandardItemModel();
QStandardItem *parentItem = _model->invisibleRootItem();
appendItem(*StringConstants::WIDGET1,parentItem);
appendItem(*StringConstants::WIDGET2,parentItem);
appendItem(*StringConstants::WIDGET3,parentItem);
appendItem(*StringConstants::WIDGET4,parentItem);
_listView= new QListView();
_listView->setModel(_model);
_listView->setSelectionBehavior(QAbstractItemView::SelectRows);
QVBoxLayout * vlayout = new QVBoxLayout();
QPushButton *btn = new QPushButton();
btn->setText(tr("ok"));
connect(btn,&QPushButton::clicked,this,&WidgetBox::getSelectedWidget);
vlayout->addWidget(_listView);
vlayout->addWidget(btn);
this->setLayout(vlayout);
}
void WidgetBox::getSelectedWidget()
{
int rows = _model->rowCount();
for(int i=0;i<rows;i++)
{
auto item = _model->item(i);
if(item->checkState() == Qt::CheckState::Checked)
{
auto data = item->data(Qt::DisplayRole);
emit appendWidget(data.toString());
item->setCheckState(Qt::Unchecked);
}
}
close();
}
void WidgetBox::appendItem(const QString& text, QStandardItem* parent)
{
QStandardItem *item = new QStandardItem(text);
item->setEditable(false);
item->setCheckable(true);
parent->appendRow(item);
}