什么是提供一个最好的办法可点击的URL QTableView(或者QTreeView,QListView等...)
给定QStandardItemModel一些列包含带有URL的文本的位置,我希望它们可以变为可点击,然后通过使用来处理单击QDesktopServices::openURL()
我希望有一些简单的方法来利用QLabeltextInteraction标志并将它们塞进表中.我无法相信没有更简单的方法来处理这个问题.我真的希望我错过了一些东西.
我使用Qtableview与QsqlTableModel用于填充表的数据.我想根据列标题上的用户选择对列进行排序.
我试过QTableView排序信号中提到的方式?获取信号(获取水平标头QtableView并连接信号sectionclicked(int logical index).但是当我点击列标题时,相同的信号不会被发出.
请找到连接完成的代码:
成员变量:
QHeaderView *m_horiz_header;
Run Code Online (Sandbox Code Playgroud)
.cpp文件
m_sqltablemodel->setTable(tabel_name);
m_sqltablemodel->setEditStrategy(QSqlTableModel::OnManualSubmit);
m_sqltablemodel->select();
m_horiz_header= m_table_view->horizontalHeader();
connect(m_horiz_header, SIGNAL(sectionClicked ( int logicalIndex ) ),
this, SLOT(on_sectionClicked ( int logicalIndex ) ));
Run Code Online (Sandbox Code Playgroud)
用于排序的插槽功能:
void class::on_sectionClicked ( int logicalIndex )
{
m_horiz_header->setSortIndicator(logicalIndex, Qt::AscendingOrder);
m_table_view->sortByColumn(logicalIndex);
}
Run Code Online (Sandbox Code Playgroud)
单击列标题时,不会调用此函数.
在我出错的地方,你能帮助我怎么做吗?
以下是我目前正在尝试的内容.标题文本正确更改颜色,但背景不会更改默认值.
template<typename T>
inline QVariant TableModel<T>::headerData(int section, Qt::Orientation orientation, int role) const
{
//...
else if(role == Qt::BackgroundRole) {
return QBrush(m_display.headerBackground);
}
//...
}
Run Code Online (Sandbox Code Playgroud)
如何设置背景颜色?
我正在使用QTableView对象类型.这个对象包含几个在线,我使用这个模型:
class PaletteTableModel(QtCore.QAbstractTableModel):
def __init__(self,colors = [[]],headers =[],parent=None):
QtCore.QAbstractTableModel.__init__(self, parent)
self.__colors=colors
self._headers=headers
def rowCount(self,parent):
return len(self.__colors)
def columnCount(self,parent):
return 6
def headerData(self,section,orientation,role):
if role==QtCore.Qt.DisplayRole:
if orientation==QtCore.Qt.Horizontal:
return self._headers[section]
else:
return QtCore.QString("Credit %1").arg(section+1)
def data(self,index,role):
if role==QtCore.Qt.ToolTipRole:
row=index.row
return "Crédit"
if role==QtCore.Qt.EditRole:
row=index.row()
column=index.column()
return self.__colors[row][column]
if role==QtCore.Qt.DisplayRole:
row=index.row()
column=index.column()
value=self.__colors[row][column]
return value
def setData(self,index,value,role=QtCore.Qt.EditRole):
if role==QtCore.Qt.EditRole:
row =index.row()
column=index.column()
ch=(value)
self.__colors[row][column]=ch
self.dataChanged.emit(index,index)
return True
def flags(self, index):
return QtCore.Qt.ItemIsEnabled|QtCore.Qt.ItemIsEditable|QtCore.Qt.ItemIsSelectable
Run Code Online (Sandbox Code Playgroud)
我想要检索此tableView的所选行.任何人请帮助我,如果可能的话我想要一个python代码
我有一个QTableView,我想验证用户输入.如果用户在单元格中插入无效值QTableView,我想突出显示该单元格并禁用a QPushButton.
我怎样才能做到这一点?我可以用QValidator吗?
我正在努力手动设置列宽QTableView.为什么这段代码不起作用?
tabb = new QTableView;
tabb->resizeColumnsToContents();
for (int col=0; col<20; col++)
{
tabb->setColumnWidth(col,80);
}
Run Code Online (Sandbox Code Playgroud)
如果我省略tabb->resizeColumnsToContents();它仍然不起作用.
我有一个QTableView,可以动态加载来自继承QAbstractItemModel的自定义模型的数据.该模型实现了fetchMore和canFetchMore.
问题是我希望能够为小数据集选择所有行,但如果我在视图中点击ctrl-a,它只会选择当前加载的行.
是否有某种机制强制QTableView获取更多行?理想情况下,我想显示一个进度条,指示从模型加载的数据部分.每隔几秒钟我就想强制模型加载更多的数据,但我仍然希望让用户与目前已加载的数据进行交互.这样,当进度条完成时,用户可以按ctrl-a并确信所有数据都已被选中.
编辑:我有另一个激励用例.我想跳转到特定的行,但如果没有加载该行,我的界面什么都不做.
如何强制QAbstractItemModel获取更多(或特定行),然后强制QTableView显示它?
如果我没有实现fetchMore和canFetchMore,之前的功能可以正常工作,但加载表格非常慢.当我实现这些方法时,情况正好相反.没有这个问题的答案导致我的qt界面的可用性问题,所以我正在为这个问题打开奖金.
这是我用来选择特定行的方法.
def select_row_from_id(view, _id, scroll=False, collapse=True):
"""
_id is from the iders function (i.e. an ibeis rowid)
selects the row in that view if it exists
"""
with ut.Timer('[api_item_view] select_row_from_id(id=%r, scroll=%r, collapse=%r)' %
(_id, scroll, collapse)):
qtindex, row = view.get_row_and_qtindex_from_id(_id)
if row is not None:
if isinstance(view, QtWidgets.QTreeView):
if collapse:
view.collapseAll()
select_model = view.selectionModel()
select_flag = QtCore.QItemSelectionModel.ClearAndSelect
#select_flag = QtCore.QItemSelectionModel.Select
#select_flag = QtCore.QItemSelectionModel.NoUpdate
with ut.Timer('[api_item_view] selecting name. qtindex=%r' % (qtindex,)):
select_model.select(qtindex, select_flag)
with ut.Timer('[api_item_view] …Run Code Online (Sandbox Code Playgroud) 在我的TableModel中,我有两列.此模型连接到TableView.我如何设置它们以便这两列填充tableView所以没有可用空间?
编辑:

我有一个QTableView正常工作在GUI上显示我的模型.但是,我想创建一个"SIGNAL/SLOT",当我从中选择一行时,它可以工作QTableView.
我怎样才能做到这一点?
我很好奇如何在数据库中显示图像QTableView.
有没有这样的东西QTableWidgetItem我可以使用它QTableView?
我用QSqlTableModel.
qtableview ×10
qt ×8
c++ ×6
pyqt ×2
python ×2
grid ×1
model ×1
pyqt4 ×1
python-2.7 ×1
qt4 ×1
qvalidator ×1
url ×1