默认情况下,QTableView双击后开始编辑单元格.如何改变这种行为.我需要它在一次点击后开始编辑.
我已将组合框委托设置为单元格.单击单元格时,它只选择它.双击单元格时,QComboBox编辑器已激活但未展开.我希望它只需点击一下就可以扩展,就像我添加QComboBox的setCellWidget功能一样QTableWidget.我使用model-view-delegate需要相同的效果.
有人能指出我在PySide中的一个简单的QTableView示例吗?
我找到了QTableView文档,但不幸的是他们没有给出一个例子,我对PySide很新,所以我甚至不知道如何开始.(我对Java Swing中的JTable非常熟悉,所以我知道如何使用表模型.)
当用户QTableView通过鼠标选择行(单选模型)时是否有信号发出?
我们正在使用QTableViewQt 4.6.3,并且需要一个在每个单元格中只有一个复选框的列.我们使用自定义子类QAbstractTableModel作为模型QTableView.现在,我们通过设置Qt::ItemIsUserCheckable标志有一个复选框.但我们无法弄清楚如何摆脱复选框旁边的空白文本框!
我们怎样才能使列只有一个复选框,没有别的?
我正试图将文本放在某个单元格中QTableView.例如:
QString codestring = "*" + ui->tblInventory->indexAt(QPoint(0,2)).data().toString() + "*";
Run Code Online (Sandbox Code Playgroud)
这应该在我的第0列第2行的单元格中获取文本QTableView.问题是,这不是它在做什么!不管争论我通入QPoint()的indexAt(),我会在小区0,0中的文本.我不知道为什么这是......任何帮助?谢谢!
[编辑]
我也试过这个:
QString codestring = "*" + ui->tblInventory->model()->data(ui->tblInventory->indexAt(QPoint(0,2))).toString() + "*";
Run Code Online (Sandbox Code Playgroud)
[编辑2]试图找出发生了什么,我把这行代码:
qDebug()<< ui->tblInventory->indexAt(QPoint(2,2)).row() << " and " << ui->tblInventory->indexAt(QPoint(2,2)).column();
Run Code Online (Sandbox Code Playgroud)
它应该得到QModelIndexat单元格2,2并输出它的行和它的列,当然应该是2和2.但是,我得到0和0!所以看起来这可能是一个问题QTableView::indexAt(),无论是我的用法还是某种bug.任何人都能解释一下吗?
我有一个SQLite-Database,我把它做成了一个QSqlTableModel.为了显示数据库,我将该模型放入了QTableView.
现在我想创建一个方法,将选定的行(或整行)复制到QClipboard.之后我想将它插入我的OpenOffice.Calc-Document.
但我不知道如何处理SelectedSIGNAL QModelIndex以及如何将其放入剪贴板.
我正在使用它QTableView来显示QAbstractTableModel:
#include <QtGui/QApplication>
#include <QAbstractTableModel>
#include <QTableView>
class TestModel : public QAbstractTableModel
{
public:
int rowCount(const QModelIndex &parent = QModelIndex()) const
{
return 2;
}
int columnCount(const QModelIndex &parent = QModelIndex()) const
{
return 2;
}
QVariant data(const QModelIndex &index, int role) const
{
switch (role)
{
case Qt::DisplayRole:
{
return 4 - index.row() + index.column();
}
}
return QVariant();
}
};
int main(int argc, char *argv[])
{
QApplication a(argc, argv);
QTableView table;
TestModel model;
table.setModel(&model);
table.setSortingEnabled(true);
table.sortByColumn(0, …Run Code Online (Sandbox Code Playgroud) I want to hide the ID column in the QtableView and i can't do that on my implementation. Can anyone help me?
void MainWindow::on_actionClear_Search_triggered()
{
model = new QStandardItemModel(cars.size(),6,this);
//create header
createHeader(model);
//set data to the table view
populate(cars);
ui->tableView->setColumnHidden(6,true);
ui->tableView->setModel(model);
}
void MainWindow::createHeader(QStandardItemModel *model){
model->setHorizontalHeaderItem(0,new QStandardItem("Car"));
model->setHorizontalHeaderItem(1, new QStandardItem("Type"));
model->setHorizontalHeaderItem(2, new QStandardItem("Mileage"));
model->setHorizontalHeaderItem(3, new QStandardItem("Year"));
model->setHorizontalHeaderItem(4, new QStandardItem("Is registered"));
model->setHorizontalHeaderItem(5, new QStandardItem("ID"));
}
void MainWindow::populate(const QList<Vehicle> &vehicles)
{
int j = 0;
QList<Vehicle>::ConstIterator iter;
for( iter= vehicles.begin(); iter != …Run Code Online (Sandbox Code Playgroud) 我需要用Qt实现一个表.
我相信我会使用这个模型使用QTableView来起诉QAbstractTableModel.
我知道我必须编辑模型的rowCount(),columnCount()和data()函数.
但是,我不明白如何在模型中精确设置数据,以便data()函数可以检索它.
为此目的提供了setData()函数吗?我已经看到它需要EditRole作为其参数,我不想要,因为我不希望我的表可编辑.
那么,如何使用data()函数在模型中"设置"数据,或者让模型获得数据?
另外,如何调用data()函数,即谁调用它以及需要调用它的位置?
请帮我解决一下这个.
谢谢.
我按照Qt提供的Spin Box Delegate教程,尝试实现自己的QItemDelegate.它将用于指定a QComboBox来表示QTableView单元格中的数据,但它不起作用.
我最大的问题是我不知道什么时候QItemDelegate会被利用.
何时itemModel->setData()使用或何时使用itemModel->setItem().我怀疑setItem()是因为我重新实现了QItemDelegate(强调"项目"),但教程使用setData()并且它工作正常.
我知道,如果指定QItemDelegate不起作用,它使用默认值,但我现在怎么说我指定的那个不起作用?
什么时候我应该怀疑QTableView使用我的代表.我想指定每个单元格使用哪些代理.这是可能的还是QTableView唯一使用一个代表?
如何将我指定的项目来填充QComboBox一旦获得通过所显示的QTableView?
我QItemDelegate在这里实现:
QComboBox位于mainwindow.cpp中的注释"Enabled"下面.qcomboboxitemdelegate.h
#ifndef QCOMBOBOXITEMDELEGATE_H
#define QCOMBOBOXITEMDELEGATE_H
#include <QItemDelegate>
#include <QComboBox>
class QComboBoxItemDelegate : public QItemDelegate
{
Q_OBJECT
public:
explicit QComboBoxItemDelegate(QObject *parent = 0);
QWidget* createEditor(QWidget *parent, const QStyleOptionViewItem &option, const QModelIndex &index);
void setEditorData(QWidget *editor, const QModelIndex &index);
void …Run Code Online (Sandbox Code Playgroud) qtableview ×10
qt ×9
c++ ×6
qt4 ×2
clipboard ×1
delegates ×1
model-view ×1
pyside ×1
python ×1
qcombobox ×1