Beispiel #1
0
FilterDlgImpl::FilterDlgImpl(QWidget* parent)
    : QDialog(parent)
{
    _setupUi();
	
    m_query->setRootIsDecorated(false);
    m_query->setSelectionMode(QAbstractItemView::NoSelection);
	
	QStandardItemModel *model = new QStandardItemModel(0, 5, this);

	model->setHeaderData(0, Qt::Horizontal, QObject::tr("Column"));
	model->setHeaderData(1, Qt::Horizontal, QObject::tr("Condition1"));
	model->setHeaderData(2, Qt::Horizontal, QObject::tr("Pattern1"));
	model->setHeaderData(3, Qt::Horizontal, QObject::tr("Condition2"));
	model->setHeaderData(4, Qt::Horizontal, QObject::tr("Pattern2"));
	
	model->insertRow(0);
	model->insertRow(1);
	model->insertRow(2);
	model->setData(model->index(0, 0), tr("Date"));
	model->setData(model->index(0, 1), "=");
	model->setData(model->index(1, 0), tr("Count"));
	model->setData(model->index(1, 1), "=");
	model->setData(model->index(2, 0), tr("Description"));
		
    m_query->setModel(model);
		
    setMinimumSize(680,100);
}
Beispiel #2
0
void tst_QItemDelegate::QTBUG4435_keepSelectionOnCheck()
{
    QStandardItemModel model(3, 1);
    for (int i = 0; i < 3; ++i) {
        QStandardItem *item = new QStandardItem(QLatin1String("Item ") + QString::number(i));
        item->setCheckable(true);
        item->setFlags(Qt::ItemIsSelectable | Qt::ItemIsUserCheckable | Qt::ItemIsEnabled);
        model.setItem(i, item);
    }
    QTableView view;
    view.setModel(&model);
    view.setItemDelegate(new TestItemDelegate);
    view.show();
    view.selectAll();
    QVERIFY(QTest::qWaitForWindowExposed(&view));
    QStyleOptionViewItem option;
    option.rect = view.visualRect(model.index(0, 0));
    // mimic QStyledItemDelegate::initStyleOption logic
    option.features = QStyleOptionViewItem::HasDisplay | QStyleOptionViewItem::HasCheckIndicator;
    option.checkState = Qt::CheckState(model.index(0, 0).data(Qt::CheckStateRole).toInt());
    const int checkMargin = qApp->style()->pixelMetric(QStyle::PM_FocusFrameHMargin, 0, 0) + 1;
    QPoint pos = qApp->style()->subElementRect(QStyle::SE_ViewItemCheckIndicator, &option, 0).center()
                 + QPoint(checkMargin, 0);
    QTest::mouseClick(view.viewport(), Qt::LeftButton, Qt::ControlModifier, pos);
    QTRY_VERIFY(view.selectionModel()->isColumnSelected(0, QModelIndex()));
    QCOMPARE(model.item(0)->checkState(), Qt::Checked);
}
Beispiel #3
0
MainWindow::MainWindow(QWidget *parent) :
    QMainWindow(parent),
    ui(new Ui::MainWindow)
{
    ui->setupUi(this);
    QStandardItemModel *model = new QStandardItemModel(7, 4, this);
    for (int row = 0; row < 7; ++row) {
        for (int column = 0; column < 4; ++column) {
            QStandardItem *item = new QStandardItem(QString("%1")
                                                    .arg(row * 4 + column));
            model->setItem(row, column, item);
        }
    }
    tableView = new QTableView;
    tableView->setModel(model);
    setCentralWidget(tableView);

    // 获取视图的项目选择模型
    QItemSelectionModel *selectionModel = tableView->selectionModel();
    // 定义左上角和右下角的索引,然后使用这两个索引创建选择
    QModelIndex topLeft;
    QModelIndex bottomRight;
    topLeft = model->index(1, 1, QModelIndex());
    bottomRight = model->index(5, 2, QModelIndex());
    QItemSelection selection(topLeft, bottomRight);
    // 使用指定的选择模式来选择项目
    selectionModel->select(selection, QItemSelectionModel::Select);
}
Beispiel #4
0
/**
 * Sets the strings of the subwidgets using the current language.
 */
void DlgFilletEdges::changeEvent(QEvent *e)
{
    if (e->type() == QEvent::LanguageChange) {
        int index = ui->shapeObject->currentIndex();
        // only get the items from index 1 on since the first one will be added automatically
        int count = ui->shapeObject->count() - 1;
        QStringList text;
        QList<QVariant> data;
        for (int i=0; i<count; i++) {
            text << ui->shapeObject->itemText(i+1);
            data << ui->shapeObject->itemData(i+1);
        }

        ui->retranslateUi(this);
        for (int i=0; i<count; i++) {
            ui->shapeObject->addItem(text.at(i));
            ui->shapeObject->setItemData(i+1, data.at(i));
        }

        ui->shapeObject->setCurrentIndex(index);
        QStandardItemModel *model = qobject_cast<QStandardItemModel*>(ui->treeView->model());
        count = model->rowCount();
        for (int i=0; i<count; i++) {
            int id = model->data(model->index(i, 0), Qt::UserRole).toInt();
            model->setData(model->index(i, 0), QVariant(tr("Edge%1").arg(id)));
        }
    }
    else {
        QWidget::changeEvent(e);
    }
}
Beispiel #5
0
void DlgFilletEdges::setupFillet(const std::vector<App::DocumentObject*>& objs)
{
    App::DocumentObject* base = d->fillet->Base.getValue();
    const std::vector<Part::FilletElement>& e = d->fillet->Edges.getValues();
    std::vector<App::DocumentObject*>::const_iterator it = std::find(objs.begin(), objs.end(), base);
    if (it != objs.end()) {
        // toggle visibility
        Gui::ViewProvider* vp;
        vp = Gui::Application::Instance->getViewProvider(d->fillet);
        if (vp) vp->hide();
        vp = Gui::Application::Instance->getViewProvider(base);
        if (vp) vp->show();

        int current_index = (it - objs.begin()) + 1;
        ui->shapeObject->setCurrentIndex(current_index);
        on_shapeObject_activated(current_index);
        ui->shapeObject->setEnabled(false);
        QStandardItemModel *model = qobject_cast<QStandardItemModel*>(ui->treeView->model());
        for (std::vector<Part::FilletElement>::const_iterator et = e.begin(); et != e.end(); ++et) {
            std::vector<int>::iterator it = std::find(d->edge_ids.begin(), d->edge_ids.end(), et->edgeid);
            if (it != d->edge_ids.end()) {
                int index = it - d->edge_ids.begin();
                model->setData(model->index(index, 0), Qt::Checked, Qt::CheckStateRole);
                model->setData(model->index(index, 1), QVariant(QLocale::system().toString(et->radius1,'f',2)));
                model->setData(model->index(index, 2), QVariant(QLocale::system().toString(et->radius2,'f',2)));
            }
        }
    }
}
Beispiel #6
0
void split(int argc, char** argv) {
    //Syntax: split [source_file] [total_parts] [destination_dir]
    if (argc >= 3) {
        QStandardItemModel* fileModel = new QStandardItemModel(1, 6);
        fileModel->deleteLater();
        SplitterCore* core = new SplitterCore(fileModel);
        core->deleteLater();
        //TODO: connect signals and implement them to show progress in terminal
        QString filePath(argv[0]);
        int parts = QString(argv[1]).toInt();
        QString destPath(argv[2]);
        QFileInfo fileinfo(filePath);
        if (fileinfo.isFile()) {
            fileModel->setData(fileModel->index(0, 0), filePath);
            fileModel->setData(fileModel->index(0, 1), destPath);
            fileModel->setData(fileModel->index(0, 2), 0);
            fileModel->setData(fileModel->index(0, 3), parts);
            fileModel->setData(fileModel->index(0, 4), fileinfo.size());
        }
        core->start();
        core->wait();
    } else {
        help(PartProcessor::kSplit);
    }
}
Beispiel #7
0
void DlgFilletEdges::on_shapeObject_activated(int index)
{
    d->object = 0;
    QStandardItemModel *model = qobject_cast<QStandardItemModel*>(ui->treeView->model());
    model->removeRows(0, model->rowCount());

    QByteArray name = ui->shapeObject->itemData(index).toByteArray();
    App::Document* doc = App::GetApplication().getActiveDocument();
    if (!doc)
        return;
    App::DocumentObject* part = doc->getObject((const char*)name);
    if (part && part->getTypeId().isDerivedFrom(Part::Feature::getClassTypeId())) {
        d->object = part;
        TopoDS_Shape myShape = static_cast<Part::Feature*>(part)->Shape.getValue();
        // build up map edge->face
        TopTools_IndexedDataMapOfShapeListOfShape edge2Face;
        TopExp::MapShapesAndAncestors(myShape, TopAbs_EDGE, TopAbs_FACE, edge2Face);
        TopTools_IndexedMapOfShape mapOfShape;
        TopExp::MapShapes(myShape, TopAbs_EDGE, mapOfShape);

        // populate the model
        d->edge_ids.clear();
        for (int i=1; i<= edge2Face.Extent(); ++i) {
            // set the index value as user data to use it in accept()
            const TopTools_ListOfShape& los = edge2Face.FindFromIndex(i);
            if (los.Extent() == 2) {
                // set the index value as user data to use it in accept()
                const TopoDS_Shape& edge = edge2Face.FindKey(i);
                // Now check also the continuity to only allow C0-continious
                // faces
                const TopoDS_Shape& face1 = los.First();
                const TopoDS_Shape& face2 = los.Last();
                GeomAbs_Shape cont = BRep_Tool::Continuity(TopoDS::Edge(edge),
                                                           TopoDS::Face(face1),
                                                           TopoDS::Face(face2));
                if (cont == GeomAbs_C0) {
                    int id = mapOfShape.FindIndex(edge);
                    d->edge_ids.push_back(id);
                }
            }
        }

        model->insertRows(0, d->edge_ids.size());
        int index = 0;
        for (std::vector<int>::iterator it = d->edge_ids.begin(); it != d->edge_ids.end(); ++it) {
            model->setData(model->index(index, 0), QVariant(tr("Edge%1").arg(*it)));
            model->setData(model->index(index, 0), QVariant(*it), Qt::UserRole);
            model->setData(model->index(index, 1), QVariant(QLocale::system().toString(1.0,'f',2)));
            model->setData(model->index(index, 2), QVariant(QLocale::system().toString(1.0,'f',2)));
            std::stringstream element;
            element << "Edge" << *it;
            if (Gui::Selection().isSelected(part, element.str().c_str()))
                model->setData(model->index(index, 0), Qt::Checked, Qt::CheckStateRole);
            else
                model->setData(model->index(index, 0), Qt::Unchecked, Qt::CheckStateRole);
            index++;
        }
    }
}
Beispiel #8
0
void tst_QItemDelegate::uintEdit()
{
    QListView view;
    QStandardItemModel model;

    {
        QStandardItem *data=new QStandardItem;
        data->setEditable(true);
        data->setData(QVariant((uint)1), Qt::DisplayRole);
        model.setItem(0, 0, data);
    }
    {
        QStandardItem *data=new QStandardItem;
        data->setEditable(true);
        data->setData(QVariant((uint)1), Qt::DisplayRole);
        model.setItem(1, 0, data);
    }

    view.setModel(&model);
    view.setEditTriggers(QAbstractItemView::AllEditTriggers);

    const QModelIndex firstCell = model.index(0, 0);

    QCOMPARE(firstCell.data(Qt::DisplayRole).userType(), static_cast<int>(QMetaType::UInt));

    view.selectionModel()->setCurrentIndex(model.index(0, 0), QItemSelectionModel::Select);
    view.edit(firstCell);

    QSpinBox *sb = view.findChild<QSpinBox*>();
    QVERIFY(sb);

    sb->stepUp();

    // Select another index to trigger the end of editing.
    const QModelIndex secondCell = model.index(1, 0);
    view.selectionModel()->setCurrentIndex(secondCell, QItemSelectionModel::Select);

    QCOMPARE(firstCell.data(Qt::DisplayRole).userType(), static_cast<int>(QMetaType::UInt));
    QCOMPARE(firstCell.data(Qt::DisplayRole).toUInt(), static_cast<uint>(2));


    view.edit(secondCell);

    // The first spinbox is deleted with deleteLater, so it is still there.
    QList<QSpinBox*> sbList = view.findChildren<QSpinBox*>();
    QCOMPARE(sbList.size(), 2);

    sb = sbList.at(1);

    sb->stepDown(); // 1 -> 0
    sb->stepDown(); // 0 (no effect)
    sb->stepDown(); // 0 (no effect)

    // Select another index to trigger the end of editing.
    view.selectionModel()->setCurrentIndex(firstCell, QItemSelectionModel::Select);

    QCOMPARE(secondCell.data(Qt::DisplayRole).userType(), static_cast<int>(QMetaType::UInt));
    QCOMPARE(secondCell.data(Qt::DisplayRole).toUInt(), static_cast<uint>(0));
}
Beispiel #9
0
bool DB2TableModel::load(const QString &filename)
{
    bool ret = true;
    QFile f(filename);

    if (!f.open(QIODevice::ReadOnly))
        return false;

    char magic[5] = {0};
    f.read(magic, 4);

    if (QString(magic) == "WDB2")
    {
        clearDbInfo();

        DB2Header hdr;
        memset(&hdr, 0, sizeof(DB2Header));

        f.seek(0);
        f.read((char*)&hdr, sizeof(DB2Header));

        loadDB2(&hdr, &f);
    }
    else if (QString(magic) == "WDBC")
    {
        clearDbInfo();
        DBCHeader hdr;
        memset(&hdr, 0, sizeof(DBCHeader));

        f.seek(0);
        f.read((char*)&hdr, sizeof(DBCHeader));

        loadDBC(&hdr, &f);
    }
    else
    {
        return false;
    }

    defDlg->fillDefenition(filename, dbbuild);
    if (defDlg->exec() == QDialog::Accepted)
    {
        QAbstractTableModel::beginResetModel();
        QStandardItemModel *st = defDlg->defenition();
        for (int i = 0; i < st->rowCount(); i++)
        {
            if (i < fieldCount)
            {
                fieldsOffsets[i].title = st->data(st->index(i, 0)).toString();
                fieldsOffsets[i].type = (FldType)FindTypeForName(st->data(st->index(i, 1)).toString());
            }
        }
        QAbstractTableModel::endResetModel();
    }

    return ret;
}
Beispiel #10
0
bool
CountingHelper::setTime( int row, double mass, std::shared_ptr< const adcontrols::MassSpectrometer > sp, QStandardItemModel& model )
{
    if ( sp ) {
        if ( auto scanlaw = sp->scanLaw() ) {
            double tof = scanlaw->getTime( mass, model.data( model.index( row, c_laps ) ).toInt() );
            model.setData( model.index( row, c_time ), tof * std::micro::den, Qt::EditRole );
        }
    }
    return true;
}
Beispiel #11
0
int main(int argc, char *argv[])
{
    QApplication app(argc, argv);

    // 创建标准项模型
    QStandardItemModel model;
    // 获取模型的根项(Root Item),根项是不可见的
    QStandardItem *parentItem = model.invisibleRootItem();

    // 创建标准项item0,并设置显示文本,图标和工具提示
    QStandardItem *item0 = new QStandardItem;
    item0->setText("A");
    QPixmap pixmap0(50,50);
    pixmap0.fill("red");
    item0->setIcon(QIcon(pixmap0));
    item0->setToolTip("indexA");
    // 将创建的标准项作为根项的子项
    parentItem->appendRow(item0);
    // 将创建的标准项作为新的父项
    parentItem = item0;

    // 创建新的标准项,它将作为item0的子项
    QStandardItem *item1 = new QStandardItem;
    item1->setText("B");
    QPixmap pixmap1(50,50);
    pixmap1.fill("blue");
    item1->setIcon(QIcon(pixmap1));
    item1->setToolTip("indexB");
    parentItem->appendRow(item1);

    // 创建新的标准项,这里使用了另一种方法来设置文本、图标和工具提示
    QStandardItem *item2 = new QStandardItem;
    QPixmap pixmap2(50,50);
    pixmap2.fill("green");
    item2->setData("C", Qt::EditRole);
    item2->setData("indexC", Qt::ToolTipRole);
    item2->setData(QIcon(pixmap2), Qt::DecorationRole);
    parentItem->appendRow(item2);

    // 在树视图中显示模型
    QTreeView view;
    view.setModel(&model);
    view.show();

    // 获取item0的索引并输出item0的子项数目,然后输出了item1的显示文本和工具提示
    QModelIndex indexA = model.index(0, 0, QModelIndex());
    qDebug() << "indexA row count: " << model.rowCount(indexA);
    QModelIndex indexB = model.index(0, 0, indexA);
    qDebug() << "indexB text: " << model.data(indexB, Qt::EditRole).toString();
    qDebug() << "indexB toolTip: " << model.data(indexB, Qt::ToolTipRole).toString();

    return app.exec();
}
Beispiel #12
0
bool
CountingHelper::readRow( int row, adcontrols::CountingMethod::value_type& v, const QStandardItemModel& model )
{
    using adcontrols::CountingMethod;

    std::get< CountingMethod::CountingEnable >( v ) = model.index( row, 0 ).data( Qt::CheckStateRole ).toBool();
    std::get< CountingMethod::CountingFormula >( v ) = model.index( row, 0 ).data( Qt::EditRole ).toString().toStdString();
    std::get< CountingMethod::CountingRange >( v ).first = model.index( row, 2 ).data( Qt::EditRole ).toDouble() / std::micro::den;
    std::get< CountingMethod::CountingRange >( v ).second = model.index( row, 3 ).data( Qt::EditRole ).toDouble() / std::micro::den;
    std::get< CountingMethod::CountingProtocol >( v ) = model.index( row, 4 ).data( Qt::EditRole ).toInt();

    return true;
}
Beispiel #13
0
Widget::Widget(QWidget *parentWidget)
    : QWidget(parentWidget)
{
    QStandardItemModel *model = new QStandardItemModel();
    QModelIndex parent;
    for (int i = 0; i < 4; ++i) {
        parent = model->index(0, 0, parent);
        model->insertRows(0, 1, parent);
        model->insertColumns(0, 1, parent);
        QModelIndex index = model->index(0, 0, parent);
        model->setData(index, i);
    }
}
Beispiel #14
0
static void loadBodies(QStandardItemModel &model, QString path)
{
	QSettings ini(path, QSettings::IniFormat);
	if (ini.status() != QSettings::NoError)
	{
		qFatal("%s could not be opened", path.toUtf8().constData());
	}
	QStringList list = ini.childGroups();
	model.setRowCount(list.size());
	for (int i = 0; i < list.size(); ++i)
	{
		ini.beginGroup(list[i]);
		model.setData(model.index(i, 0, QModelIndex()), ini.value("name").toString(), Qt::DisplayRole);
		model.setData(model.index(i, 1, QModelIndex()), ini.value("size").toString(), Qt::DisplayRole);
		model.setData(model.index(i, 2, QModelIndex()), ini.value("buildPower", 0).toString(), Qt::DisplayRole);
		model.setData(model.index(i, 3, QModelIndex()), ini.value("buildPoints", 0).toString(), Qt::DisplayRole);
		model.setData(model.index(i, 4, QModelIndex()), ini.value("weight").toString(), Qt::DisplayRole);
		model.setData(model.index(i, 5, QModelIndex()), ini.value("hitpoints").toString(), Qt::DisplayRole);
		model.setData(model.index(i, 6, QModelIndex()), ini.value("model").toString(), Qt::DisplayRole);
		model.setData(model.index(i, 7, QModelIndex()), ini.value("weaponSlots").toString(), Qt::DisplayRole);
		model.setData(model.index(i, 8, QModelIndex()), ini.value("powerOutput").toString(), Qt::DisplayRole);
		model.setData(model.index(i, 9, QModelIndex()), ini.value("armourKinetic").toString(), Qt::DisplayRole);
		model.setData(model.index(i, 10, QModelIndex()), ini.value("armourHeat").toString(), Qt::DisplayRole);
		model.setData(model.index(i, 11, QModelIndex()), ini.value("flameModel").toString(), Qt::DisplayRole);
		model.setData(model.index(i, 12, QModelIndex()), ini.value("designable", false).toString(), Qt::DisplayRole);
		model.setData(model.index(i, 13, QModelIndex()), ini.value("droidType", "DROID").toString(), Qt::DisplayRole);
		model.setData(model.index(i, 14, QModelIndex()), list[i], Qt::DisplayRole);
		ini.endGroup();
	}
}
Beispiel #15
0
void CMessageDock::addMessage(const QUuid& uuid, int lineNo, CategoryType category, const QString& description)
{
	QString iconPath, categoryName;
	switch(category)
	{
	case InfomationCategory:
		iconPath     = ":/images/tango/small/dialog-information.png";
		categoryName = tr("Information");
		m_countOfInfomationMessages++;
		break;
	case WarningCategory:
		iconPath     = ":/images/icons/small/software-update-urgent-yellow.png";
		categoryName = tr("Warning");
		m_countOfWarningMessages++;
		break;
	case ErrorCategory:
		iconPath     = ":/images/tango/small/dialog-error.png";
		categoryName = tr("Error");
		m_countOfErrorMessages++;
		break;
	default:
		break;
	}

	QStandardItemModel* model
		= static_cast<QStandardItemModel*>(
			static_cast<QSortFilterProxyModel*>(m_listWidget->model())->sourceModel()) ;
	int row = model->rowCount();
	model->insertRow(row);
	if( !iconPath.isEmpty() ) {
		model->setData(model->index(row, CategoryColumn   ), QIcon(iconPath), Qt::DecorationRole);
		model->setData(model->index(row, CategoryColumn   ), categoryName);
	}
	model->setData(model->index(row, RefIndexColumn   ), m_messages.size(), Qt::UserRole + 1);
	model->setData(model->index(row, DescriptionColumn), description);
	model->setData(model->index(row, FileNameColumn   ), theFile->fileName(uuid));
	model->setData(model->index(row, LineNoColumn     ), 0 < lineNo ? QString("%1").arg(lineNo) : "");
	model->setData(model->index(row, LineNoColumn     ), Qt::AlignRight, Qt::TextAlignmentRole);

	MessageInfoType info;
	info.description= description;
	info.category	= category;
	info.uuid		= uuid;
	info.lineNo		= lineNo;
	m_messages.push_back(info);

	updateMessagesCount();
}
Beispiel #16
0
int main(int argc, char** argv) {
  QApplication app(argc, argv);

#if GUI
  checkScansDirectoryExists();

  MainWindow window;
  window.show();
#endif

#if PIE
  QStandardItemModel* model = new QStandardItemModel(0, 2);
  model->setHeaderData(0, Qt::Horizontal, "Label");
  model->setHeaderData(1, Qt::Horizontal, "Quantity");

  QDir scanDirectory("/home/valentin/Images/Scans");
  QStringList mangasList = scanDirectory.entryList(QDir::Dirs | QDir::NoDotAndDotDot);

  int row = 0;
  for (const QString& manga: mangasList) {
    model->insertRow(row, QModelIndex());

    QDir mangaDirectory(scanDirectory.path()+"/"+manga);
    QString nbChapters = QString::number(mangaDirectory.entryList(QDir::Dirs | QDir::NoDotAndDotDot).size());

    int r = (16*(row+1))%256;
    int g = (32*(row+1))%256;
    int b = (64*(row+1))%256;

    model->setData(model->index(row, 0, QModelIndex()), manga);
    model->setData(model->index(row, 1, QModelIndex()), nbChapters);
    model->setData(model->index(row, 0, QModelIndex()), QColor(r, g, b), Qt::DecorationRole);

    row++;
  }

  PieView* view = new PieView;
  //QTableView* view = new QTableView;
  view->setModel(model);

  //QHeaderView* headerView = view->horizontalHeader();
  //headerView->setStretchLastSection(true);

  view->show();
#endif

  return app.exec();
}
Beispiel #17
0
void DsWidget::slotCompletePackageNameFinished(QNetworkReply* reply)
{
    QUrl replyUrl = reply->url();

    QApplication::restoreOverrideCursor();

    // Check if this is the reply for the last request, or a delayed reply we are receiving just now
    if( QString::compare(replyUrl.toString(), m_lastQueryUrl.toString(), Qt::CaseInsensitive) != 0 )
    {
        kDebug() << "Received a delayed reply, discarding it";
        return; // It was a delayed reply, discard it
    }

    if ( reply->error() )
    {
        kDebug() << "Didn't receive a reply for request " << replyUrl.toEncoded().constData() << " - " <<  qPrintable(reply->errorString());
    }
    else
    {
        QByteArray ba = reply->readAll();

        if( ba.isEmpty() )
        {
            kDebug() << "No completion data received for request " << replyUrl.toEncoded().constData() << "(probably no package matches that pattern)";
            return;
        }

        QList<QByteArray> pkgSuggestions = ba.split('\n');

        QStandardItemModel *m = new QStandardItemModel(pkgSuggestions.count(), 2, m_pkgLineEdit->completer());

        for( int i = 0; i < pkgSuggestions.count(); ++i)
        {
            QModelIndex pkgIdx = m->index(i, 0);
            QModelIndex descIdx = m->index(i, 1);
            QList<QByteArray> pkgDescSplit = pkgSuggestions.at(i).split('|');
            QString pkg = pkgDescSplit.at(0);
            QString desc =pkgDescSplit.at(1);
            m->setData(pkgIdx, pkg);
            m->setData(descIdx, desc);
        }
        m_pkgLineEdit->completer()->setModel(m);
    }

    m_pkgLineEdit->completer()->complete();

    reply->deleteLater();
}
Beispiel #18
0
uint32 getProductBoxID(QComboBox* pBox, int32 index)
{
	QStandardItemModel* pProductModel =
		static_cast<QStandardItemModel*>(pBox->model());
	QModelIndex id_index = pProductModel->index(index, 0);
	return pProductModel->data(id_index).toUInt();
}
Beispiel #19
0
  PluginManagerWidget::PluginManagerWidget(QWidget *parent)
    : QWidget(parent)
    , m_ui(new Ui::PluginManagerWidget)
  {
    m_ui->setupUi(this);
    
    QStandardItemModel *model = new QStandardItemModel(this);
    for (const QString& name : PluginLoader::instance().availablePlugins())
    {
      model->appendRow(new QStandardItem(PluginLoader::instance().plugin(name)->icon(),
                                         name));
    }

    QSortFilterProxyModel *proxyModel = new QSortFilterProxyModel(this);
    proxyModel->setSourceModel(model);
    
    model->sort(0, Qt::AscendingOrder);
    
    m_ui->PluginList->setModel(model);
    m_ui->PluginList->setItemDelegate(new PluginWidgetDelegate(m_ui->PluginList));
    m_ui->PluginList->setSelectionMode(QAbstractItemView::SingleSelection);
    m_ui->PluginList->setEditTriggers(QAbstractItemView::NoEditTriggers);
    connect(m_ui->PluginList,
        SIGNAL(clicked(const QModelIndex&)),
        this,
        SLOT(onIndexChanged(const QModelIndex&)));
    
    const QModelIndex& index =model->index(0, 0);
    m_ui->PluginList->selectionModel()->select(index, QItemSelectionModel::Select);
    onIndexChanged(index);
  }
bool LibraryFilterProxyModel::filterAcceptsRow(int sourceRow, const QModelIndex &sourceParent) const
{
	if (filterAcceptsRowItself(sourceRow, sourceParent)) {
		return true;
	}

	// Accept if any of the parents is accepted on it's own merits
	QModelIndex parent = sourceParent;
	while (parent.isValid()) {
		if (filterAcceptsRowItself(parent.row(), parent.parent())) {
			return true;
		}
		parent = parent.parent();
	}

	// Accept if any of the children is accepted on it's own merits
	if (hasAcceptedChildren(sourceRow, sourceParent)) {
		return true;
	}

	// Accept separators if any top level items and its children are accepted
	QStandardItemModel *model = qobject_cast<QStandardItemModel*>(sourceModel());
	QStandardItem *item = model->itemFromIndex(model->index(sourceRow, 0, sourceParent));
	if (item && item->type() == Miam::IT_Separator) {
		for (QModelIndex index : _topLevelItems.values(static_cast<SeparatorItem*>(item))) {
			if (filterAcceptsRow(index.row(), sourceParent)) {
				return true;
			}
		}
	}
	return (SettingsPrivate::instance()->librarySearchMode() == SettingsPrivate::LSM_HighlightOnly);
}
Beispiel #21
0
void tst_QItemDelegate::task257859_finalizeEdit()
{
    QStandardItemModel model;
    model.appendRow(new QStandardItem());

    QListView view;
    view.setModel(&model);
    view.show();
    QApplication::setActiveWindow(&view);
    view.setFocus();
    QTest::qWait(30);

    QModelIndex index = model.index(0, 0);
    view.edit(index);
    QTest::qWait(30);

    QList<QLineEdit *> lineEditors = qFindChildren<QLineEdit *>(view.viewport());
    QCOMPARE(lineEditors.count(), 1);

    QPointer<QWidget> editor = lineEditors.at(0);
    QCOMPARE(editor->hasFocus(), true);

    QDialog dialog;
    QTimer::singleShot(500, &dialog, SLOT(close()));
    dialog.exec();
    QTRY_VERIFY(!editor);
}
Beispiel #22
0
void tst_QItemDelegate::editorKeyPress()
{
    QFETCH(QString, initial);
    QFETCH(QString, expected);

    QStandardItemModel model;
    model.appendRow(new QStandardItem(initial));

    QListView view;
    view.setModel(&model);
    view.show();

    QModelIndex index = model.index(0, 0);
    view.setCurrentIndex(index); // the editor will only selectAll on the current index
    view.edit(index);

    QList<QLineEdit*> lineEditors = qFindChildren<QLineEdit *>(view.viewport());
    QCOMPARE(lineEditors.count(), 1);

    QLineEdit *editor = lineEditors.at(0);
    QCOMPARE(editor->selectedText(), initial);

    QTest::keyClicks(editor, expected);
    QTest::keyClick(editor, Qt::Key_Enter);
    QApplication::processEvents();

    QCOMPARE(index.data().toString(), expected);
}
void GameObjectSelectAssetDialog::PopulateGameAssetsTree(GameContentType gameContentType)
{
	AEAssert(m_GameAssetManager != nullptr);

	if(m_GameAssetManager == nullptr)
	{
		return;
	}

	QStandardItemModel* standardModel = reinterpret_cast<QStandardItemModel*>(m_StringProxyFilterModel->sourceModel());

	standardModel->removeRows(0, standardModel->rowCount());

	const GameAssetMap& gameAssetMap = m_GameAssetManager->GetGameAssetMap();

	for (auto gameAssetIt : gameAssetMap)
	{
		GameAsset* gameAsset = gameAssetIt.second;

		if(gameAsset->GetGameContentType() == gameContentType)
		{
			standardModel->insertRow(0);
			standardModel->setData(standardModel->index(0, 0), QString::fromStdWString(gameAsset->GetName()), Qt::ItemDataRole::DisplayRole);
			standardModel->setData(standardModel->index(0, 0), gameAsset->GetUniqueAssetID(), AE_QT_ITEM_DATA_ROLE_GAME_ASSET_UNIQUE_ID);
		}
	}
}
Beispiel #24
0
void tst_QItemDelegate::doubleEditorNegativeInput()
{
    QStandardItemModel model;

    QStandardItem *item = new QStandardItem;
    item->setData(10.0, Qt::DisplayRole);
    model.appendRow(item);

    QListView view;
    view.setModel(&model);
    view.show();

    QModelIndex index = model.index(0, 0);
    view.setCurrentIndex(index); // the editor will only selectAll on the current index
    view.edit(index);

    QList<QDoubleSpinBox*> editors = qFindChildren<QDoubleSpinBox *>(view.viewport());
    QCOMPARE(editors.count(), 1);

    QDoubleSpinBox *editor = editors.at(0);
    QCOMPARE(editor->value(), double(10));

    QTest::keyClick(editor, Qt::Key_Minus);
    QTest::keyClick(editor, Qt::Key_1);
    QTest::keyClick(editor, Qt::Key_0);
    QTest::keyClick(editor, Qt::Key_Comma); //support both , and . locales
    QTest::keyClick(editor, Qt::Key_Period);
    QTest::keyClick(editor, Qt::Key_0);
    QTest::keyClick(editor, Qt::Key_Enter);
    QApplication::processEvents();

    QCOMPARE(index.data().toString(), QString("-10"));
}
void tst_QColumnView::dynamicModelChanges()
{
    struct MyItemDelegate : public QItemDelegate
    {
        void paint(QPainter *painter,
                   const QStyleOptionViewItem &option,
                   const QModelIndex &index) const
        {
            paintedIndexes += index;
            QItemDelegate::paint(painter, option, index);
        }

        mutable QSet<QModelIndex> paintedIndexes;

    } delegate;;
    QStandardItemModel model;
    ColumnView view;
    view.setModel(&model);
    view.setItemDelegate(&delegate);
    view.show();

    QStandardItem *item = new QStandardItem(QLatin1String("item"));
    model.appendRow(item);

    QTest::qWait(200); //let the time for painting to occur
    QCOMPARE(delegate.paintedIndexes.count(), 1);
    QCOMPARE(*delegate.paintedIndexes.begin(), model.index(0,0));


}
void ScvRipper::frameStart(int frameNum)
{
	char temp[20];
	sprintf(temp,"img-%05d.png", frameNum);
	QString imgName(temp);

	QStandardItemModel* model = (QStandardItemModel*)ui.imagesview->model() ;

	if(imglist[frameNum-1] == imgName)
	{
		model->item(frameNum-1, 0)->setData(QColor("red"), Qt::ForegroundRole);
		ui.imagesview->setCurrentIndex(model->index(frameNum-1, 0));
	}

	
	/*
	for ( int i = 0 ; i < model->rowCount() ; ++i )
	{
	  QString label = model->item( i, 0 )->data( Qt::DisplayRole ).toString() ;

	  if(label == imgName)
	  {
		  model->item(i, 0)->setData(QColor("red"), Qt::ForegroundRole);
	  }
	}
	*/
}
Beispiel #27
0
NewWidget::NewWidget(QWidget *parent) :
    QDialog(parent),
    ui(new Ui::NewWidget)
{
    ui->setupUi(this);


    this->setWindowFlags(Qt::SplashScreen);            //hide menu bar from dialog
    this->setAttribute(Qt::WA_TranslucentBackground);


    //Initialize ComboBox Status
    QStringList list=(QStringList()<<"--Select Type--"<<"String"<<"Char"<<"Bool"<<"Integer"<<"Double"<<"Float"<<"Long"<<"Short");
    ui->comboBox->addItems(list);
    ui->comboBox->setItemData(0,QColor(Qt::gray), Qt::BackgroundRole);

    QStandardItemModel* model =
            qobject_cast<QStandardItemModel*>(ui->comboBox->model());
    QModelIndex firstIndex = model->index(0, ui->comboBox->modelColumn(),
            ui->comboBox->rootModelIndex());
    QStandardItem* firstItem = model->itemFromIndex(firstIndex);
    firstItem->setSelectable(false);


}
Beispiel #28
0
int main(int argc, char *argv[])
{
    QApplication a(argc, argv);

      QListView *listView = new QListView;
      QListView *newListView = new QListView;
      QStringList nameItem;
        nameItem << "Linux" << "Android" << "Mac OS";

      QStandardItemModel *model = new QStandardItemModel(nameItem.length(),1); // initialize row and columns of data model
        for(int i = 0; i < model->rowCount(); ++i)
          {
            QModelIndex modelIndex = model->index(i,0);
            QString str = nameItem.at(i);
              model->setData(modelIndex,str,Qt::DisplayRole);
              model->setData(modelIndex,"ToolTip for" + str,Qt::ToolTipRole);
              model->setData(modelIndex,QIcon(":/Images/" + str + ".jpeg"),Qt::DecorationRole);
          }

        listView->setViewMode(QListView::IconMode);
        listView->setModel(model);
        listView->setGeometry(430,340,200,200);
          newListView->setViewMode(QListView::IconMode);
          newListView->setModel(model);
          newListView->setGeometry(listView->geometry());
      listView->show();
      newListView->show();



    return a.exec();
}
Beispiel #29
0
void SearchDialog::toggleItems(bool enabled)
{
	QCheckBox *checkBox = qobject_cast<QCheckBox*>(sender());
	for (QListView *list : this->findChildren<QListView*>()) {
		QStandardItemModel *m = qobject_cast<QStandardItemModel*>(list->model());
		// Hiding / restoring items has to be done in 2-steps
		// First step is for finding items that are about to be moved
		// Second step is for iterating backward on marked items -> you cannot remove items on a single for loop
		if (enabled) {
			// Restore hidden items for every list
			QList<QStandardItem*> items = _hiddenItems.value(list);
			QList<int> indexes;
			for (int i = 0; i < items.size(); i++) {
				QStandardItem *item = items.at(i);
				// Extract only matching items
				if (item->data(AbstractSearchDialog::DT_Origin) == checkBox->text()) {
					indexes.prepend(i);
				}
			}

			// Moving back from hidden to visible
			for (int i = 0; i < indexes.size(); i++) {
				QStandardItem *item = items.takeAt(indexes.at(i));
				m->appendRow(item);
			}

			// Replace existing values with potentially empty list
			_hiddenItems.insert(list, items);
			m->sort(0);
		} else {
			// Hide items for every list
			QStandardItemModel *m = qobject_cast<QStandardItemModel*>(list->model());
			QList<QStandardItem*> items;
			QList<QPersistentModelIndex> indexes;
			for (int i = 0; i < m->rowCount(); i++) {
				QStandardItem *item = m->item(i, 0);
				if (item->data(AbstractSearchDialog::DT_Origin).toString() == checkBox->text()) {
					indexes << m->index(i, 0);
					// Default copy-constructor is protected!
					QStandardItem *copy = new QStandardItem(item->text());
					copy->setData(checkBox->text(), AbstractSearchDialog::DT_Origin);
					copy->setIcon(item->icon());
					items.append(copy);
				}
			}

			for (const QPersistentModelIndex &i : indexes) {
				m->removeRow(i.row());
			}

			// Finally, hide selected items
			if (!items.isEmpty()) {
				QList<QStandardItem*> hItems = _hiddenItems.value(list);
				hItems.append(items);
				_hiddenItems.insert(list, hItems);
			}
		}
	}
}
Beispiel #30
0
void ReportView::openFile(const QString &path)
{
    QString fileName;
    if (path.isNull())
        fileName = QFileDialog::getOpenFileName(this, tr("Choose a data file"), "", "*.cht");
    else
        fileName = path;

    if (fileName.isEmpty())
        return;

    QFile file(fileName);
    if (!file.open(QFile::ReadOnly | QFile::Text))
        return;



    QTextStream stream(&file);
    QString line;

    QStandardItemModel* model = new QStandardItemModel(0, 2);
    ReportView* report_view = new ReportView(model);


    int row = 0;
    do {
        line = stream.readLine();
        if (!line.isEmpty()) {
            model->insertRows(row, 1, QModelIndex());

            QStringList pieces = line.split(",", QString::SkipEmptyParts);
            model->setData(model->index(row, 0, QModelIndex()),
                           pieces.value(0));
            model->setData(model->index(row, 1, QModelIndex()),
                           pieces.value(1));
            model->setData(model->index(row, 0, QModelIndex()),
                           QColor(pieces.value(2)), Qt::DecorationRole);
            row++;
        }
    } while (!line.isEmpty());

    report_view->setAttribute(Qt::WA_DeleteOnClose);
    report_view->show();
    file.close();
    statusBar()->showMessage(tr("Loaded %1").arg(fileName), 2000);
}