看了很多关于获取选定行号的线程后,我真的很困惑.
你如何QTableView使用QStandardItemModel我在下面的选择模型和行为中使用ROW数字
setSelectionBehavior(QAbstractItemView::SelectRows);
setSelectionMode(QAbstractItemView::SingleSelection);
Run Code Online (Sandbox Code Playgroud)
如果你有自己的选择方式,你可以解释它是如何工作的.谢谢您的帮助!
我是QT的新手,我正在使用QTableView,如下所示:

在表的左侧,Qt会自动显示一个行号,正如我用红色标注的那样.我如何摆脱这些数字?
我的另一个问题是,如果我点击任何一个单元格,只选择该单元格.如何在用户点击单元格时选择整行,就像我在粉红色中所说的那样?例如,如果单击testApp-copy.itr单元格,则应选择整个第三行.
我有QTableView和QAbstractTableModel.我要求行的高度等于24.我知道这样做的唯一方法是通过调用QTableView::setRowHeight.由于模型是动态的,因此可能会添加新行,但setRowHeight每次添加新行时我都不想调用.
如何配置QTableView以使其对新添加的行使用相同的高度,或者可以将模型发送到行的高度?
我是Qt模型/视图框架的新手.在我的应用程序中,我想要1000 X 1000个单元格.应该有最低内存要求,它应该很快.我不知道这个模型的术语是什么.但我有自己的类知道如何处理存储在表中的双变量.目前我正在使用QLineEdit和Validator来创建单元格数组.但对于> 50 X 50的细胞来说,它太慢了.所以我决定采用旧的MS Excel方式.
那么我应该使用哪个Widget:QTableWidget或者QTableView?
任何人都可以简要解释一下这个Model/View框架是什么?我不是计算机科学家,因此我觉得很难理解......
我不知道怎么问这个问题,所以,请随时询问更多信息.
似乎tableView->resizeColumnsToContents()只会根据当前视图中的数据调整所有列的大小.这意味着如果我有更多的数据(在单词数量方面更长),这些单词将被包装(如果wordWrap属性设置为true).
奇怪的是,如果我向下滚动到底部并刷新数据,tableView将正确调整这些列的大小.好像tableView不知道下面有更长的文字.
所以,我的问题是,如何根据所有数据确保将这些列调整为最大值?
我的代码
QSqlTableModel *model = new QSqlTableModel;
model->setTable("item");
model->setEditStrategy(QSqlTableModel::OnManualSubmit);
model->select();
tableResult->setModel(model);
tableResult->setEditTriggers(QAbstractItemView::NoEditTriggers);
tableResult->setSelectionBehavior(QAbstractItemView::SelectRows);
tableResult->setSelectionMode(QAbstractItemView::SingleSelection);
tableResult->resizeColumnsToContents();
tableResult->resizeRowsToContents();
Run Code Online (Sandbox Code Playgroud)
更新1
我试过了tableResult->scrollToBottom(),它只会根据底部的项目调整大小.所以,如果中间有较长的单词,那些单词就会被包裹起来.
更新2
如果有人想了解我在说什么,请下载此示例.您将看到单击PushButton将生成未正确调整大小的数据.
更新3
我是QT的新手,我刚刚设法让QTableView与我的模型一起工作.它固定了3列.当我打开一个窗口时,它看起来不错但是当我调整窗口大小时,QTableView本身会调整大小,但列的宽度保持不变.是否有任何内置方式使其工作?我希望每个窗口调整大小时调整列的大小以适应QTableView的边缘.
我刚刚开始使用Qt编程,我正在尝试使用一个QTableView控件来创建一个简单的表格数据布局,该控件具有继承自己的创建的模型类QAbstractTableModel.出于某种原因,我的表视图最终看起来像这样:
alt text http://users.nerdland.net/tyler/files/pics/qtableview_checkboxes.png
什么在每个单元格中看起来像复选框(但在我点击它们时什么也不做)的东西,我怎么让它们消失?QTableView除了对象的名称,我没有更改任何属性.
如果重要的话,我的模型代码很简单:
MyTableModel::MyTableModel(QObject* parent)
: QAbstractTableModel(parent)
{
}
MyTableModel::~MyTableModel()
{
}
int MyTableModel::rowCount(const QModelIndex& parent) const
{
return 1000;
}
int MyTableModel::columnCount(const QModelIndex& parent) const
{
return 5;
}
QVariant MyTableModel::data(const QModelIndex& index, int role) const
{
return "Foo";
}
Run Code Online (Sandbox Code Playgroud)
对话框UI在Qt Designer中构建,在对话框的类中,我将模型附加到视图,如下所示:
MyTableModel testModel = new MyTableModel(this);
ui.testTable->setModel(testModel);
Run Code Online (Sandbox Code Playgroud)
除此之外,我不执行任何操作ui.testTable.
使用Qt 4.6.
这是我的软件的打印屏幕:

如您所见,第一个QTableVIew标题不占用宽度的100%.实际上,场地右侧有一个小的垂直白色空间size.
如何让标题占据宽度的100%QTableView?
我需要能够在a的表行中有一个按钮/链接QTableView.这是打开一个对话框,以便更有效地编辑该行.
经过几个小时的网络搜索,我还没有找到一个体面的例子.
我知道这很可能是使用a来完成的QItemDelegate,但我不确定如何在行中创建一个功能小部件,而不必先将项目强制转换为编辑模式.
任何帮助将不胜感激.
在下面的示例代码中(受此处影响很大),我希望选择单击单元格的整行而不是单个单元格.如何更改代码以包含该代码?
import re
import operator
import os
import sys
import sqlite3
import cookies
from PyQt4.QtCore import *
from PyQt4.QtGui import *
def main():
app = QApplication(sys.argv)
w = MyWindow()
w.show()
sys.exit(app.exec_())
class MyWindow(QWidget):
def __init__(self, *args):
QWidget.__init__(self, *args)
# data
self.tabledata = [('apple', 'red', 'small'),
('apple', 'red', 'medium'),
('apple', 'green', 'small'),
('banana', 'yellow', 'large')]
self.header = ['fruit', 'color', 'size']
# create table
self.createTable()
# layout
layout = QVBoxLayout()
layout.addWidget(self.tv)
self.setLayout(layout)
def createTable(self):
# create the view
self.tv = …Run Code Online (Sandbox Code Playgroud)