def __init__(self, parent=None): super(GraphDigitGraphicsView, self).__init__(parent) # scene rect = QRectF(0, 0, 300, 400) self.scene = QGraphicsScene(rect) # 创建场景 参数:场景区域 self.setScene(self.scene) # 给视图窗口设置场景 # image self.graphicsPixmapItem = QGraphicsPixmapItem() # chart image self.scene.addItem(self.graphicsPixmapItem) # setAntialias self.setRenderHint(QPainter.Antialiasing) # image object stored in project data # item objects storage self.axesxObjs = {} self.axesyObjs = {} self.gridObjs = [] self.curveObjs = {} self.pointObjs = {} # axis coord stored in project data # grid setting stored in project data # grid position self.gridxpos = [] self.gridypos = [] # axes curve and point datamodel self.axesxModel = QStandardItemModel() self.axesyModel = QStandardItemModel() self.axesxSelectModel = QItemSelectionModel(self.axesxModel) self.axesySelectModel = QItemSelectionModel(self.axesyModel) self.curveModel = QStandardItemModel() self.pointsModel = QStandardItemModel() self.curveModel.setHorizontalHeaderLabels( ["current", "name", "visible"]) self.pointsModel.setHorizontalHeaderLabels(["order", "x", "y"]) self.axesxModel.setHorizontalHeaderLabels(["position", "x"]) self.axesyModel.setHorizontalHeaderLabels(["position", "y"]) ### self.xNo = 0 self.yNo = 0 ### self.mode = OpMode.default # data manage self.proj = Digi() # init self.currentCurve = None self.pointsModel.itemChanged.connect(self.changePointOrder) self.curveModel.itemChanged.connect(self.changeCurveVisible) self.scene.selectionChanged.connect(self.slotSceneSeletChanged) # state self._lastCurve = None
def __init__(self, treeManipulate, tabnumber): self.treeManipulate = treeManipulate self.tabnumber = tabnumber self.tvattributesview = None self.lenameattributes = None self.levalueattributes = None self.battributesinsert = None self.battributesdelete = None self.battributeshelp = None self.setUiInit() self.helptext = self.treeManipulate.main.attribhelp #build empty model for data and the selection self.attribmodel = AttribStandardItemModel(self.tvattributesview) self.attribmodel.setHorizontalHeaderLabels(["Name", "Value", "var/fun", "comment"]) self.attribselectionmodel = QItemSelectionModel(self.attribmodel) #set model to tableview self.tvattributesview.setModel(self.attribmodel) self.tvattributesview.setSelectionModel(self.attribselectionmodel) #signals self.battributesinsert.clicked.connect(self.addAttrib) self.battributesdelete.clicked.connect(self.deleteAttrib) self.battributeshelp.clicked.connect(self.help) self.attribmodel.itemChanged.connect(self.changeAttrib) #resize self.resz() #variables self.changeOnce = True #prevent the changeAttrib() function from being executed twice (the second time by the model change)
def __openTable(self): self.qryModel = QSqlQueryModel(self) self.qryModel.setQuery( '''SELECT empNo, Name, Gender, Birthday, Province, Department, Salary FROM employee ORDER BY empNo''' ) if self.qryModel.lastError().isValid(): QMessageBox.critical( self, "错误", "数据表查询错误,错误信息\n" + self.qryModel.lastError().text()) return self.__getFieldNames() self.qryModel.setHeaderData(0, Qt.Horizontal, "工号") self.qryModel.setHeaderData(1, Qt.Horizontal, "姓名") self.qryModel.setHeaderData(2, Qt.Horizontal, "性别") self.qryModel.setHeaderData(3, Qt.Horizontal, "出生日期") self.qryModel.setHeaderData(4, Qt.Horizontal, "省份") self.qryModel.setHeaderData(5, Qt.Horizontal, "部门") self.qryModel.setHeaderData(6, Qt.Horizontal, "工资") self.selModel = QItemSelectionModel(self.qryModel) self.selModel.currentRowChanged.connect(self.do_currentRowChanged) self.ui.tableView.setModel(self.qryModel) self.ui.tableView.setSelectionModel(self.selModel) self.ui.actOpenDB.setEnabled(False) self.ui.actRecInsert.setEnabled(True) self.ui.actRecDelete.setEnabled(True) self.ui.actRecEdit.setEnabled(True) self.ui.actScan.setEnabled(True) self.ui.actTestSQL.setEnabled(True)
def __init__(self, parent, main): QDialog.__init__(self, parent) self.ui = Ui_IMDBSearchDialog() self.ui.setupUi(self) self._main = main self.ui.searchMovieButton.clicked.connect(self.onSearchMovieButton) self.ui.movieInfoButton.clicked.connect(self.onMovieInfoButton) self.ui.okButton.clicked.connect(self.onOkButton) self.ui.cancelButton.clicked.connect(self.onCancelButton) header = self.ui.searchResultsView.horizontalHeader() header.setSectionResizeMode(QHeaderView.Stretch) header.hide() self.ui.searchResultsView.verticalHeader().hide() self.imdbModel = ImdbListModel(self) self.ui.searchResultsView.setModel(self.imdbModel) # FIXME: This connection should be cleaner. self.imdbModel._main = self self.imdbSelectionModel = QItemSelectionModel(self.imdbModel) self.ui.searchResultsView.setSelectionModel(self.imdbSelectionModel) self.imdbSelectionModel.selectionChanged.connect( self.onIMDBChangeSelection) self.ui.searchResultsView.activated.connect(self.onOkButton)
def __init__(self, elements=None, parent=None): """ Common interface for the labelListModel, the boxListModel, and the cropListModel see concrete implementations for details :param elements: :param parent: """ QAbstractTableModel.__init__(self, parent) if elements is None: elements = [] self._elements = list(elements) self._selectionModel = QItemSelectionModel(self) def onSelectionChanged(selected, deselected): if selected: ind = selected[0].indexes() if len(ind) > 0: self.elementSelected.emit(ind[0].row()) self._selectionModel.selectionChanged.connect(onSelectionChanged) self._allowRemove = True self._toolTipSuffixes = {} self.unremovable_rows = [ ] # rows in this list cannot be removed from the gui,
def __init__(self, parent=None): super().__init__(parent) #调用父类构造函数,创建窗体 self.ui = Ui_MainWindow() #创建UI对象 self.ui.setupUi(self) #构造UI界面 self.__dlgSetHeaders = None self.setCentralWidget(self.ui.tableView) ##构建状态栏 self.LabCellPos = QLabel("当前单元格:", self) self.LabCellPos.setMinimumWidth(180) self.ui.statusBar.addWidget(self.LabCellPos) self.LabCellText = QLabel("单元格内容:", self) self.LabCellText.setMinimumWidth(200) self.ui.statusBar.addWidget(self.LabCellText) ##构建Item Model/View self.itemModel = QStandardItemModel(10, 5, self) #数据模型,10行5列 self.selectionModel = QItemSelectionModel(self.itemModel) #Item选择模型 self.selectionModel.currentChanged.connect(self.do_currentChanged) ##为tableView设置数据模型 self.ui.tableView.setModel(self.itemModel) #设置数据模型 self.ui.tableView.setSelectionModel(self.selectionModel) #设置选择模型
def __init__(self, parent=None): super().__init__(parent) #调用父类构造函数,创建窗体 self.ui = Ui_MainWindow() #创建UI对象 self.ui.setupUi(self) #构造UI界面 self.setCentralWidget(self.ui.splitter) self.__ColCount = 6 #列数=6 self.itemModel = QStandardItemModel(5, self.__ColCount, self) # 数据模型,10行6列 self.selectionModel = QItemSelectionModel(self.itemModel) #Item选择模型 self.selectionModel.currentChanged.connect(self.do_curChanged) self.__lastColumnTitle = "测井取样" self.__lastColumnFlags = (Qt.ItemIsSelectable | Qt.ItemIsUserCheckable | Qt.ItemIsEnabled) ##tableView设置 self.ui.tableView.setModel(self.itemModel) #设置数据模型 self.ui.tableView.setSelectionModel(self.selectionModel) #设置选择模型 oneOrMore = QAbstractItemView.ExtendedSelection self.ui.tableView.setSelectionMode(oneOrMore) #可多选 itemOrRow = QAbstractItemView.SelectItems self.ui.tableView.setSelectionBehavior(itemOrRow) #单元格选择 self.ui.tableView.verticalHeader().setDefaultSectionSize(22) #缺省行高 self.ui.tableView.setAlternatingRowColors(True) #交替行颜色 self.ui.tableView.setEnabled(False) #先禁用tableView self.__buildStatusBar()
def main(args): app = QApplication(args) page = QSplitter() data = Model(1000, 10, page) selections = QItemSelectionModel(data) table = QTableView() table.setModel(data) table.setSelectionModel(selections) table.horizontalHeader().setSectionsMovable(True) table.verticalHeader().setSectionsMovable(True) # Set StaticContents to enable minimal repaints on resizes. table.viewport().setAttribute(Qt.WA_StaticContents) page.addWidget(table) tree = QTreeView() tree.setModel(data) tree.setSelectionModel(selections) tree.setUniformRowHeights(True) tree.header().setStretchLastSection(False) tree.viewport().setAttribute(Qt.WA_StaticContents) # Disable the focus rect to get minimal repaints when scrolling on Mac. tree.setAttribute(Qt.WA_MacShowFocusRect, False) page.addWidget(tree) list = QListView() list.setModel(data) list.setSelectionModel(selections) list.setViewMode(QListView.IconMode) list.setSelectionMode(QAbstractItemView.ExtendedSelection) list.setAlternatingRowColors(False) list.viewport().setAttribute(Qt.WA_StaticContents) list.setAttribute(Qt.WA_MacShowFocusRect, False) page.addWidget(list) page.setWindowIcon(QIcon(images_dir + "/interview.png")) page.setWindowTitle("Interview") page.show() return app.exec_()
def _biaocaozuo(self): self.model = QtSql.QSqlTableModel() self.model.setTable('BookData') self.model.setEditStrategy(QSqlTableModel.OnManualSubmit) # 设置保存策略 self.table_view.setModel(self.model) self.model.select() self.model.setHeaderData(0, Qt.Horizontal, 'ISBN') self.model.setHeaderData(1, Qt.Horizontal, '书名') self.model.setHeaderData(2, Qt.Horizontal, '作者') self.model.setHeaderData(3, Qt.Horizontal, '出版社') self.model.setHeaderData(4, Qt.Horizontal, '出版日期') self.model.setHeaderData(5, Qt.Horizontal, '评分') self.model.setHeaderData(6, Qt.Horizontal, '照片') self.table_view.setColumnHidden(6, True) self.mapper = QDataWidgetMapper() self.mapper.setModel(self.model) self.mapper.setSubmitPolicy(QDataWidgetMapper.AutoSubmit) self.mapper.addMapping(self.lineEdit_ISBN, 0) self.mapper.addMapping(self.lineEdit_shuming, 1) self.mapper.addMapping(self.lineEdit_zuozhe, 2) self.mapper.addMapping(self.lineEdit_chubanshe, 3) self.mapper.addMapping(self.lineEdit_chubanriqi, 4) self.mapper.addMapping(self.lineEdit_pingfen, 5) self.mapper.toFirst() self.selModel = QItemSelectionModel(self.model) # 选择模型 self.table_view.setSelectionModel(self.selModel) self.selModel.currentChanged.connect( self.do_currentChanged) # 当前项变化时触发 self.selModel.currentRowChanged.connect( self.do_currentRowChanged) # 选择行变化时
def __init__(self, treeManipulate, tabnumber): self.treeManipulate = treeManipulate self.tabnumber = tabnumber self.tvspecruleview = None self.bspecrulehelp = None self.setUiInit() self.helptext = self.treeManipulate.main.specrulehelp #build empty model for data and the selection self.specrulemodel = SpecRuleStandardItemModel(self.tvspecruleview, self) self.specrulemodel.setHorizontalHeaderLabels( ["Node", "uid", "Condition", "result", "comment"]) self.specruleselectionmodel = QItemSelectionModel(self.specrulemodel) #set model to tableview self.tvspecruleview.setModel(self.specrulemodel) self.tvspecruleview.setSelectionModel(self.specruleselectionmodel) #signals self.bspecrulehelp.clicked.connect(self.help) self.specrulemodel.itemChanged.connect(self.changeSpecRule) self.treeManipulate.treeModel.nameChangedSignal.connect( self.changeSpecRuleNodeName) #resize self.resz() #variables self.changeOnce = True
def __init__(self, parent=None): QTreeView.__init__(self, parent) #model self._model = CategoriesTreeModel(self) self.setModel(self._model) # selectionMode self._selection_model = QItemSelectionModel(self._model, self) self.setSelectionModel(self._selection_model) #delegate self._delegate = CategoriesTreeDelegate(parent) self.setItemDelegate(self._delegate) #阻止双击时出现编辑框 self.setEditTriggers(self.NoEditTriggers) #设置展开/收缩动画 self.setAnimated(True) #展开所有 self.expandAll() #开启右键自定义菜单 self.setContextMenuPolicy(Qt.CustomContextMenu) #右键菜单信号槽 self.customContextMenuRequested.connect(self._slot_custom_context_menu) #右键菜单项 self._context_menu_add_child = QAction('添加子分类') self._context_menu_add_child.triggered.connect( self._slot_context_menu_add_child) self._context_menu_rename = QAction('重命名') self._context_menu_rename.triggered.connect( self._slot_context_menu_rename) self._context_menu_delete = QAction('删除该分类') self._context_menu_delete.triggered.connect( self._slot_context_menu_delete) # 设置默认选择为 root self._selection_model.select(self.rootIndex(), QItemSelectionModel.SelectCurrent)
def set_model_common(self, model, list_base_class) -> None: if self.selection_model: self.selection_model.selectionChanged.disconnect() list_base_class.setModel(self, model) self.selection_model = QItemSelectionModel(model) self.selection_model.selectionChanged.connect(self._selection_changed) self.setSelectionModel(self.selection_model)
def onAnnotationsLoaded(self): self.labeltool.model().dirtyChanged.connect(self.onModelDirtyChanged) self.onModelDirtyChanged(self.labeltool.model().dirty()) self.treeview.setModel(self.labeltool.model()) self.scene.setModel(self.labeltool.model()) self.selectionmodel = QItemSelectionModel(self.labeltool.model()) self.treeview.setSelectionModel(self.selectionmodel) self.treeview.selectionModel().currentChanged.connect(self.labeltool.setCurrentImage) self.property_editor.onModelChanged(self.labeltool.model()) self.startBackgroundLoading()
def __openTable(self): ##打开数据表 self.tabModel = QSqlRelationalTableModel(self, self.DB) #数据表 self.tabModel.setTable("studInfo") #设置数据表 self.tabModel.setEditStrategy(QSqlTableModel.OnManualSubmit ) #数据保存方式,OnManualSubmit , OnRowChange self.tabModel.setSort(self.tabModel.fieldIndex("studID"), Qt.AscendingOrder) #排序 if (self.tabModel.select() == False): #查询数据失败 QMessageBox.critical( self, "错误信息", "打开数据表错误,错误信息\n" + self.tabModel.lastError().text()) return self.__getFieldNames() #获取字段名和序号 ##字段显示名 self.tabModel.setHeaderData(self.fldNum["studID"], Qt.Horizontal, "学号") self.tabModel.setHeaderData(self.fldNum["name"], Qt.Horizontal, "姓名") self.tabModel.setHeaderData(self.fldNum["gender"], Qt.Horizontal, "性别") self.tabModel.setHeaderData(self.fldNum["departID"], Qt.Horizontal, "学院") self.tabModel.setHeaderData(self.fldNum["majorID"], Qt.Horizontal, "专业") ## 设置代码字段的查询关系数据表 self.tabModel.setRelation(self.fldNum["departID"], QSqlRelation("departments", "departID", "department")) #学院 self.tabModel.setRelation(self.fldNum["majorID"], QSqlRelation("majors", "majorID", "major")) #专业 self.selModel = QItemSelectionModel(self.tabModel) #关联选择模型 ##selModel当前项变化时触发currentChanged信号 self.selModel.currentChanged.connect(self.do_currentChanged) ##选择行变化时 ## self.selModel.currentRowChanged.connect(self.do_currentRowChanged) self.ui.tableView.setModel(self.tabModel) #设置数据模型 self.ui.tableView.setSelectionModel(self.selModel) #设置选择模型 delgate = QSqlRelationalDelegate(self.ui.tableView) self.ui.tableView.setItemDelegate(delgate) #为关系型字段设置缺省代理组件 self.tabModel.select() #必须重新查询数据 ##更新actions和界面组件的使能状态 self.ui.actOpenDB.setEnabled(False) self.ui.actRecAppend.setEnabled(True) self.ui.actRecInsert.setEnabled(True) self.ui.actRecDelete.setEnabled(True) self.ui.actFields.setEnabled(True)
def setupControls(self): """This method connects all controls in the UI to their callbacks. It is called in ad_action""" portNames = [Tachy2Gis.NO_PORT] portNames.extend( [port.portName() for port in QSerialPortInfo.availablePorts()]) self.dlg.portComboBox.addItems(portNames) self.dlg.portComboBox.currentIndexChanged.connect(self.connectSerial) self.dlg.logFileButton.clicked.connect(self.setLog) self.dlg.deleteAllButton.clicked.connect(self.clearCanvas) self.dlg.finished.connect(self.mapTool.clear) self.dlg.dumpButton.clicked.connect(self.dump) self.dlg.deleteVertexButton.clicked.connect(self.mapTool.deleteVertex) self.dlg.vertexTableView.setModel(self.vertexList) self.dlg.vertexTableView.horizontalHeader().setSectionResizeMode( 0, QHeaderView.Stretch) self.dlg.vertexTableView.setSelectionModel( QItemSelectionModel(self.vertexList)) self.dlg.vertexTableView.selectionModel().selectionChanged.connect( self.mapTool.selectVertex) self.dlg.finished.connect(self.restoreTool) self.dlg.accepted.connect(self.restoreTool) self.dlg.rejected.connect(self.restoreTool) self.dlg.sourceLayerComboBox.setFilters( QgsMapLayerProxyModel.VectorLayer | QgsMapLayerProxyModel.WritableLayer) self.dlg.sourceLayerComboBox.setLayer(self.iface.activeLayer()) self.dlg.sourceLayerComboBox.layerChanged.connect(self.setActiveLayer) self.dlg.sourceLayerComboBox.layerChanged.connect(self.mapTool.clear) self.fieldDialog.targetLayerComboBox.layerChanged.connect( self.targetChanged) self.vertexList.layoutChanged.connect(self.dumpEnabled) self.fieldDialog.buttonBox.accepted.connect( self.extent_provider.add_feature) self.dlg.zoomResetButton.clicked.connect(self.extent_provider.reset) self.dlg.zoomModeComboBox.addItems([ 'Layer', 'Last feature', 'Last 2 features', 'Last 4 features', 'Last 8 features', ]) self.dlg.zoomModeComboBox.currentIndexChanged.connect( self.extent_provider.set_mode) self.dlg.zoomActiveCheckBox.stateChanged.connect( self.auto_zoomer.set_active) self.extent_provider.ready.connect(self.auto_zoomer.apply)
def setRoot(self, root: SequencerStep) -> None: """ Populate the widget with a sequence of acquisition steps Args: root: The Root step of the acquisition sequence. All other steps are children of this step. """ self.setModel(TreeModel(root)) self.setSelectionModel(QItemSelectionModel(self.model(), self)) self.selectionModel().selectionChanged.connect(self._selectionChanged) self.selectionModel().currentChanged.connect(self._currentChanged)
def __init__(self, parent=None): super().__init__(parent) # initialize class attributes self._INPUTS_FIXED_WIDTH = 180 self._BUTTON_MIN_WIDTH = 80 self._OXYGEN_PATH_32 = os.path.join("resources", "icons", "oxygen", "32") # locale and language settings self.language = self.locale().name()[:2] self.qtTl = QTranslator() self.appTl = QTranslator() self.switchTranslator(self.qtTl, "qtbase", self.language) self.switchTranslator(self.appTl, "wuchshuellenrechner", self.language) # TODO(th) self.model = TreeModel() # setup gui self.setMinimumSize(1200, 760) self.createActions() self.createMainMenu() # plot widget self.plotWidget = VariantPlotView() self.plotWidget.setModel(self.model) # create vertical splitter splitter = QSplitter(Qt.Vertical) splitter.setContentsMargins(11, 11, 11, 11) splitter.addWidget(self.createEditBox()) splitter.addWidget(self.plotWidget) self.setCentralWidget(splitter) self.dataWidget.setModel(self.model) selectionModel = QItemSelectionModel(self.model) self.dataWidget.setSelectionModel(selectionModel) self.plotWidget.setSelectionModel(selectionModel) self.retranslateUi() self.model.dataChanged.connect(self.updateInputs) self.model.itemsInserted.connect(self.taxInput.setDisabled) self.model.allItemsRemoved.connect(self.taxInput.setEnabled) self.operationInput.textChanged.connect(self.updateOperation) self.districtInput.textChanged.connect(self.updateDistrict) self.managerInput.textChanged.connect(self.updateManager) self.locationInput.textChanged.connect(self.updateLocation) self.taxInput.stateChanged.connect(self.updateTax)
def __init__(self, parent=None): super().__init__(parent) #调用父类构造函数,创建窗体 self.ui = Ui_MainWindow() #创建Ui对象 self.ui.setupUi(self) #构造UI self.__ColCount = 6 #列数 self.itemModel = QStandardItemModel( 10, self.__ColCount, self) #创建QStandardItemModel类型的数据模型,指定行列值 ''' setSelectionBehavior() 此属性保存视图使用的选择行为。 此属性保存选择是根据单个项目,行还是列进行的 #QItemSelectionModel() 此属性保存视图在哪种选择模式下运行。 #此属性控制用户是否可以选择一个或多个项目,并且在多个项目选择中控制选择是否必须是连续范围的项目 ''' self.selectionModel = QItemSelectionModel(self.itemModel) self.selectionModel.currentChanged.connect( self.do_curChanged) #单元格选择发生变化时会发射此信号 self.__lastColumnTitle = "" #设置最后一列的标题,可以是空 self.__lastColumnFlags = (Qt.ItemIsSelectable | Qt.ItemIsUserCheckable | Qt.ItemIsEnabled) #设置tableView属性 self.ui.tableView.setModel(self.itemModel) #数据模型 self.ui.tableView.setSelectionModel(self.selectionModel) #选择模型 oneOrMore = QAbstractItemView.ExtendedSelection #选择模式->多选模式 self.ui.tableView.setSelectionMode(oneOrMore) #多选模式 itemOrRow = QAbstractItemView.SelectItems #项选择模式->单元格选择 self.ui.tableView.setSelectionBehavior(itemOrRow) #单元格选择 self.ui.tableView.verticalHeader().setDefaultSectionSize(22) self.ui.tableView.setAlternatingRowColors(True) #交替行颜色 self.ui.tableView.setEnabled(False) #设置默认禁用tabelView self.ui.actFontBold.setCheckable(False) self.setCentralWidget(self.ui.splitter) #设置中心组件 # self.setCentralWidget(self.ui.tableView) self.__buildStatusBar() self.spinCeshen = QmyFloatSpinDelegate(0, 10000, 0, self) self.spinLength = QmyFloatSpinDelegate(0, 6000, 2, self) self.spinDegree = QmyFloatSpinDelegate(0, 360, 1, self) self.ui.tableView.setItemDelegateForColumn(0, self.spinCeshen) self.ui.tableView.setItemDelegateForColumn(1, self.spinLength) self.ui.tableView.setItemDelegateForColumn(3, self.spinLength) self.ui.tableView.setItemDelegateForColumn(2, self.spinDegree) qualities = ["优", "良", "合格", "不合格"] self.comboDelegate = QmyComboBoxDelegate(self) self.comboDelegate.setItems(qualities, False) self.ui.tableView.setItemDelegateForColumn(4, self.comboDelegate)
def __init__(self, parent=None): super().__init__(parent) self.ui = Ui_QWFormTable() self.ui.setupUi(self) self.__dlgSetHeaders = None self.setAutoFillBackground(True) self.setCentralWidget(self.ui.qTableView) self.itemModel = QStandardItemModel(10, 5, self) self.selectionModel = QItemSelectionModel(self.itemModel) self.ui.qTableView.setModel(self.itemModel) self.ui.qTableView.setSelectionModel(self.selectionModel)
def __init__(self, parent=None): super().__init__(parent) self.ui = Ui_MainWindow() self.ui.setupUi(self) self.setCentralWidget(self.ui.qSplitter) self.__ColCount = 6 self.itemModel = QStandardItemModel(5, self.__ColCount, self) self.selectionModel = QItemSelectionModel(self.itemModel) self.selectionModel.currentChanged.connect(self.do_curChanged) self.__lastColumnTitle = "测井取样" self.__lastColumnFlags = (Qt.ItemIsSelectable | Qt.ItemIsUserCheckable | Qt.ItemIsEnabled) self.ui.qTableView.setModel(self.itemModel) self.ui.qTableView.setSelectionModel(self.selectionModel) oneOrMore = QAbstractItemView.ExtendedSelection self.ui.qTableView.setSelectionMode(oneOrMore) itemOrRow = QAbstractItemView.SelectItems self.ui.qTableView.setSelectionBehavior(itemOrRow) self.ui.qTableView.verticalHeader().setDefaultSectionSize(22) self.ui.qTableView.setAlternatingRowColors(True) self.ui.qTableView.setEnabled(False) self.qLabel1 = QLabel("当前单元格:", self) self.qLabel1.setMinimumWidth(180) self.qLabel2 = QLabel("单元格内容:", self) self.qLabel2.setMinimumWidth(150) self.qLabel3 = QLabel("当前文件:", self) self.ui.qStatusBar.addWidget(self.qLabel1) self.ui.qStatusBar.addWidget(self.qLabel2) self.ui.qStatusBar.addPermanentWidget(self.qLabel3) self.spinCeshen = QmyFloatSpinDelegate(0, 10000, 0, self) self.spinLength = QmyFloatSpinDelegate(0, 6000, 2, self) self.spinDegree = QmyFloatSpinDelegate(0, 360, 1, self) self.ui.qTableView.setItemDelegateForColumn(0, self.spinCeshen) self.ui.qTableView.setItemDelegateForColumn(1, self.spinLength) self.ui.qTableView.setItemDelegateForColumn(3, self.spinLength) self.ui.qTableView.setItemDelegateForColumn(2, self.spinDegree) qualities = ["优", "良", "合格", "不合格"] self.comboDelegate = QmyComboBoxDelegate(self) self.comboDelegate.setItems(qualities, False) self.ui.qTableView.setItemDelegateForColumn(4, self.comboDelegate)
def __init__(self, parent=None): super().__init__(parent) #调用父类构造函数,创建窗体 self.ui = Ui_MainWindow() #创建UI对象 self.ui.setupUi(self) #构造UI界面 self.setCentralWidget(self.ui.splitter) self.__buildStatusBar() self.COL_COUNT = 6 #常数,列数=6 self.itemModel = QStandardItemModel(5, self.COL_COUNT, self) # 数据模型,10行6列 ## headerList=["测深(m)","垂深(m)","方位(°)","总位移(m)","固井质量","测井取样"] ## self.itemModel.setHorizontalHeaderLabels(headerList) #设置表头文字 self.selectionModel = QItemSelectionModel(self.itemModel) #Item选择模型 self.selectionModel.currentChanged.connect(self.do_currentChanged) self.__lastColumnFlags = (Qt.ItemIsSelectable | Qt.ItemIsUserCheckable | Qt.ItemIsEnabled) self.__lastColumnTitle = "测井取样" #为tableView设置数据模型 self.ui.tableView.setModel(self.itemModel) #设置数据模型 self.ui.tableView.setSelectionModel(self.selectionModel) #设置选择模型 oneOrMore = QAbstractItemView.ExtendedSelection self.ui.tableView.setSelectionMode(oneOrMore) #可多选 itemOrRow = QAbstractItemView.SelectItems self.ui.tableView.setSelectionBehavior(itemOrRow) #单元格选择 self.ui.tableView.verticalHeader().setDefaultSectionSize(22) #缺省行高 self.ui.tableView.setEnabled(False) #先禁用tableView ## self.__resetTable(5) #创建自定义代理组件并设置 self.spinCeShen = QmyFloatSpinDelegate(0, 10000, 0, self) #用于 测深 self.spinLength = QmyFloatSpinDelegate(0, 6000, 2, self) #垂深,总位移 self.spinDegree = QmyFloatSpinDelegate(0, 360, 1, self) #用于 方位 self.ui.tableView.setItemDelegateForColumn(0, self.spinCeShen) #测深 self.ui.tableView.setItemDelegateForColumn(1, self.spinLength) #垂深 self.ui.tableView.setItemDelegateForColumn(3, self.spinLength) #总位移 self.ui.tableView.setItemDelegateForColumn(2, self.spinDegree) #方位角 qualities = ["优", "良", "合格", "不合格"] self.comboDelegate = QmyComboBoxDelegate(self) self.comboDelegate.setItems(qualities, False) #不可编辑 self.ui.tableView.setItemDelegateForColumn(4, self.comboDelegate) #固井质量
def __init__(self, *args): # Add self as listener to project data updates # (undo/redo, as well as normal actions handled within this class all update the model) app = get_app() app.updates.add_listener(self) # Create standard model self.model = QStandardItemModel() self.model.setColumnCount(6) self.model_ids = {} self.ignore_updates = False self.ignore_image_sequence_paths = [] # Create proxy model (for sorting and filtering) self.proxy_model = FileFilterProxyModel(parent=self) self.proxy_model.setDynamicSortFilter(True) self.proxy_model.setFilterCaseSensitivity(Qt.CaseInsensitive) self.proxy_model.setSortCaseSensitivity(Qt.CaseSensitive) self.proxy_model.setSourceModel(self.model) self.proxy_model.setSortLocaleAware(True) # Create selection model to share between views self.selection_model = QItemSelectionModel(self.proxy_model) # Connect signal app.window.FileUpdated.connect(self.update_file_thumbnail) app.window.refreshFilesSignal.connect( functools.partial(self.update_model, clear=False)) # Call init for superclass QObject super(QObject, FilesModel).__init__(self, *args) # Attempt to load model testing interface, if requested # (will only succeed with Qt 5.11+) if info.MODEL_TEST: try: # Create model tester objects from PyQt5.QtTest import QAbstractItemModelTester self.model_tests = [] for m in [self.proxy_model, self.model]: self.model_tests.append( QAbstractItemModelTester( m, QAbstractItemModelTester.FailureReportingMode.Warning) ) log.info("Enabled {} model tests for emoji data".format(len(self.model_tests))) except ImportError: pass
def __init__(self, parent=None, name=None, editable=False): QComboBox.__init__(self, parent) self.setMaxVisibleItems(20) self.setEditable(editable) self.maxWidth = 0 if name is not None: self.setObjectName(name) # save the model, use our view, create a new selection model model = self.model() oldview = self.view() self.setView(ComboListView(self, self)) self.view().setModel(model) self.view().setSelectionModel(QItemSelectionModel(model, self.view()))
def __init__(self, parent=None): QAbstractListModel.__init__(self, parent) self._layerStack = [] self.selectionModel = QItemSelectionModel(self) self.selectionModel.selectionChanged.connect(self.updateGUI) self.selectionModel.selectionChanged.connect(self._onSelectionChanged) self._movingRows = False QTimer.singleShot(0, self.updateGUI) def _handleRemovedLayer(layer): # Layerstacks *own* the layers they hold, and thus are # responsible for cleaning them up when they are removed: layer.clean_up() self.layerRemoved.connect(_handleRemovedLayer)
def __openTable(self): self.tabModel = QSqlRelationalTableModel(self, self.DB) self.tabModel.setTable("studInfo") self.tabModel.setEditStrategy(QSqlTableModel.OnManualSubmit) self.tabModel.setSort(self.tabModel.fieldIndex("studID"), Qt.AscendingOrder) if (self.tabModel.select() == False): QMessageBox.critical( self, "错误信息", "打开数据表错误,错误信息\n" + self.tabModel.lastError().text()) return self.__getFieldNames() self.tabModel.setHeaderData(self.fldNum["studID"], Qt.Horizontal, "学号") self.tabModel.setHeaderData(self.fldNum["name"], Qt.Horizontal, "姓名") self.tabModel.setHeaderData(self.fldNum["gender"], Qt.Horizontal, "性别") self.tabModel.setHeaderData(self.fldNum["departID"], Qt.Horizontal, "学院") self.tabModel.setHeaderData(self.fldNum["majorID"], Qt.Horizontal, "专业") self.tabModel.setRelation( self.fldNum["departID"], QSqlRelation("departments", "departID", "department")) self.tabModel.setRelation(self.fldNum["majorID"], QSqlRelation("majors", "majorID", "major")) self.selModel = QItemSelectionModel(self.tabModel) self.selModel.currentChanged.connect(self.do_currentChanged) self.ui.tableView.setModel(self.tabModel) self.ui.tableView.setSelectionModel(self.selModel) delgate = QSqlRelationalDelegate(self.ui.tableView) self.ui.tableView.setItemDelegate(delgate) self.tabModel.select() self.ui.actOpenDB.setEnabled(False) self.ui.actRecAppend.setEnabled(True) self.ui.actRecInsert.setEnabled(True) self.ui.actRecDelete.setEnabled(True) self.ui.actFields.setEnabled(True)
def setupViews(self): splitter = QSplitter() table = QTableView() self.pieChart = PieView() splitter.addWidget(table) splitter.addWidget(self.pieChart) splitter.setStretchFactor(0, 0) splitter.setStretchFactor(1, 1) table.setModel(self.model) self.pieChart.setModel(self.model) self.selectionModel = QItemSelectionModel(self.model) table.setSelectionModel(self.selectionModel) self.pieChart.setSelectionModel(self.selectionModel) table.horizontalHeader().setStretchLastSection(True) self.setCentralWidget(splitter)
def __init__(self, parent=None): super().__init__(parent) #调用父类构造函数,创建窗体 self.ui = Ui_QWFormTable() #创建UI对象 self.ui.setupUi(self) #构造UI界面 self.__dlgSetHeaders = None self.setAutoFillBackground(True) self.setCentralWidget(self.ui.tableView) self.ui.tableView.setAlternatingRowColors(True) ## self.ui.tableView.verticalHeader().setDefaultSectionSize(25) #缺省行高 ## self.ui.tableView.setSelectionMode(QAbstractItemView.SingleSelection) #单选 ## self.ui.tableView.setSelectionBehavior(QAbstractItemView.SelectItems) #单元格选择 #构建Model/View self.itemModel = QStandardItemModel(10, 5, self) #数据模型,10行5列 self.selectionModel = QItemSelectionModel(self.itemModel) #Item选择模型 self.ui.tableView.setModel(self.itemModel) #设置数据模型 self.ui.tableView.setSelectionModel(self.selectionModel) #设置选择模型
def __init__(self, api: Api, main_window: QMainWindow) -> None: super().__init__(main_window) model = AssStylesModel(self, api.subs.styles) selection_model = QItemSelectionModel(model) self._style_list = _StyleList(api, model, selection_model, self) self._style_editor = _StyleEditor(api, model, selection_model, self) self._style_editor.setEnabled(False) self._preview_box = _StylePreview(api, model, selection_model, self) self._preview_box.preview_text_changed.connect(self._sync_preview_text) layout = QHBoxLayout(self) layout.addWidget(self._style_list) layout.addWidget(self._style_editor) layout.addWidget(self._preview_box) self.setWindowTitle("Styles manager") self._sync_preview_text()
def __init__(self, ms_experiment, *args): QWidget.__init__(self, *args) self.ms_experiment = ms_experiment self.table_model = ScanTableModel(self, self.ms_experiment, self.header) self.table_view = QTableView() # register a proxy class for filering and sorting the scan table self.proxy = QSortFilterProxyModel(self) self.proxy.setSourceModel(self.table_model) self.table_view.sortByColumn(1, Qt.AscendingOrder) # setup selection model self.table_view.setSelectionMode(QAbstractItemView.SingleSelection) self.table_view.setSelectionBehavior(QAbstractItemView.SelectRows) self.table_view.setModel(self.proxy) self.table_view.setSelectionModel(QItemSelectionModel(self.proxy)) # header self.horizontalHeader = self.table_view.horizontalHeader() self.horizontalHeader.sectionClicked.connect(self.onHeaderClicked) # enable sorting self.table_view.setSortingEnabled(True) # connect signals to slots self.table_view.selectionModel().currentChanged.connect( self.onCurrentChanged) # keyboard moves to new row self.horizontalHeader.sectionClicked.connect(self.onHeaderClicked) layout = QVBoxLayout(self) layout.addWidget(self.table_view) self.setLayout(layout) # hide column 7 with the PepIon data, intern information usage self.table_view.setColumnHidden(7, True) # Add rt in minutes for better TIC interaction self.table_view.setItemDelegateForColumn(2, RTUnitDelegate(self)) self.table_view.setColumnWidth(2, 160)
def setupViews(self): splitter = QSplitter() self.table = QTableView() self.pieChart = PieView() splitter.addWidget(self.pieChart) splitter.addWidget(self.table) splitter.setStretchFactor(0, 0) splitter.setStretchFactor(1, 0) self.table.setModel(self.model) self.pieChart.setModel(self.model2) self.selectionModel = QItemSelectionModel(self.model2) self.table.setSelectionModel(self.selectionModel) #self.pieChart.setSelectionModel(self.selectionModel) #table.setColumnWidth(0,100) self.setCentralWidget(splitter) self.table.doubleClicked.connect(self.ClickAction_table)