예제 #1
0
파일: MshView.cpp 프로젝트: XRuiWang/ogs
void MshView::selectionChanged( const QItemSelection &selected, const QItemSelection &deselected )
{
	Q_UNUSED(deselected);
	if (!selected.isEmpty())
	{
		emit removeSelectedMeshComponent();
		const QModelIndex idx = *(selected.indexes().begin());
		const TreeItem* tree_item = static_cast<TreeModel*>(this->model())->getItem(idx);

		const MshItem* list_item = dynamic_cast<const MshItem*>(tree_item);
		if (list_item)
		{
			emit enableSaveButton(true);
			emit enableRemoveButton(true);
			emit meshSelected(list_item->getMesh());
		}
		else
		{
			emit enableSaveButton(false);
			emit enableRemoveButton(false);
			emit elementSelected(dynamic_cast<const MshItem*>(tree_item->parentItem())->vtkSource(), static_cast<unsigned>(tree_item->row()), true);
		}
	}
	//emit itemSelectionChanged(selected, deselected);
	//return QTreeView::selectionChanged(selected, deselected);
}
예제 #2
0
void BasicGLWidget::mousePressEvent(QMouseEvent *e)
{
    if (e->buttons() & Qt::LeftButton) {
        _camera->mousePress(e->pos(), e->modifiers());
    } else if (e->button() == Qt::RightButton) {
        QVector3D clickPos(_camera->mapPoint(e->pos())),
                eyePos(_camera->world().inverted().column(3)),
                direction = (clickPos - eyePos).normalized();
        Mesh* selected = getNearestMesh(eyePos, direction);
        renderer->setCurrentMesh(selected);
        if (selected)
           emit meshSelected(selected);
    }
}