标签: qabstracttablemodel

如何设置QTableView的行高?

我有QTableViewQAbstractTableModel.我要求行的高度等于24.我知道这样做的唯一方法是通过调用QTableView::setRowHeight.由于模型是动态的,因此可能会添加新行,但setRowHeight每次添加新行时我都不想调用.

如何配置QTableView以使其对新添加的行使用相同的高度,或者可以将模型发送到行的高度?

c++ qt row qtableview qabstracttablemodel

31
推荐指数
1
解决办法
3万
查看次数

Qt QTableView如何只有一个复选框列

我们正在使用QTableViewQt 4.6.3,并且需要一个在每个单元格中只有一个复选框的列.我们使用自定义子类QAbstractTableModel作为模型QTableView.现在,我们通过设置Qt::ItemIsUserCheckable标志有一个复选框.但我们无法弄清楚如何摆脱复选框旁边的空白文本框!

我们怎样才能使列只有一个复选框,没有别的?

qt qt4 qtableview qabstracttablemodel

16
推荐指数
2
解决办法
2万
查看次数

如何在QAbstractTableModel中设置数据

我需要用Qt实现一个表.

我相信我会使用这个模型使用QTableView来起诉QAbstractTableModel.

我知道我必须编辑模型的rowCount(),columnCount()和data()函数.

但是,我不明白如何在模型中精确设置数据,以便data()函数可以检索它.

为此目的提供了setData()函数吗?我已经看到它需要EditRole作为其参数,我不想要,因为我不希望我的表可编辑.

那么,如何使用data()函数在模型中"设置"数据,或者让模型获得数据?

另外,如何调用data()函数,即谁调用它以及需要调用它的位置?

请帮我解决一下这个.

谢谢.

qt qtableview qabstracttablemodel

13
推荐指数
2
解决办法
2万
查看次数

在QTableView中显示动画图标的最佳方法是什么?

我一直在努力解决这个问题,我似乎无法找到正确的方法.

我想要的是能够使用动画图标作为我的一些项目的装饰(通常表明该特定项目正在进行一些处理).我有一个自定义表模型,我在一个显示QTableView.

我的第一个想法是创建一个自定义委托,负责显示动画.当传递a QMovie作为装饰角色时,代表将连接到QMovie每个新框架可用时更新显示(参见下面的代码).但是,在调用委托paint方法后,画家似乎仍然无效(调用画家save方法时出错,可能是因为指针不再指向有效内存).

另一种解决方案是dataChanged每当新帧可用时发出项目的信号,但1)会产生许多不必要的开销,因为数据没有真正改变; 2)在模型级别处理电影似乎并不干净:显示层(QTableView或代理人)应负责处理新帧的显示.

有没有人知道在Qt视图中显示动画的干净(并且最好是高效)方式?


对于那些感兴趣的人,这里是我开发的代表的代码(目前不起作用).

// Class that paints movie frames every time they change, using the painter
// and style options provided
class MoviePainter : public QObject
{
    Q_OBJECT

  public: // member functions
    MoviePainter( QMovie * movie, 
                  QPainter * painter, 
                  const QStyleOptionViewItem & option );

  public slots:
    void paint( ) const;

  private: // member variables
    QMovie               * movie_;
    QPainter             * painter_;
    QStyleOptionViewItem   option_; …
Run Code Online (Sandbox Code Playgroud)

c++ qt qtableview qabstracttablemodel

10
推荐指数
2
解决办法
3802
查看次数

PyQt:使用QAbstractTableModel向QTableView添加行

我是Qt编程的新手.我正在尝试创建一个可以通过单击按钮添加行的简单表.我可以很好地实现表,但似乎无法获得更新的数据显示在表上.我相信我的问题源于这样一个事实:我似乎无法使用按钮正确调用任何类型的"更改数据"方法.我已经尝试了几种不同的在线解决方案,所有这些都导致了4年前的死胡同.到目前为止我所拥有的是基本结构,我无法弄清楚如何使用新数据更新表.

这是基本观点

我已经设置了一些测试数据.

在最后的实现中,表将从空开始,我想追加行并将它们显示在表视图中.

import sys
from PyQt4.QtCore import *
from PyQt4.QtGui import *

class MyWindow(QWidget):
    def __init__(self):
        QWidget.__init__(self)

        # create table
        self.get_table_data()
        self.table = self.createTable()

        # layout
        self.layout = QVBoxLayout()

        self.testButton = QPushButton("test")
        self.connect(self.testButton, SIGNAL("released()"), self.test)        

        self.layout.addWidget(self.testButton)
        self.layout.addWidget(self.table)
        self.setLayout(self.layout)

    def get_table_data(self):
        self.tabledata = [[1234567890,2,3,4,5],
                          [6,7,8,9,10],
                          [11,12,13,14,15],
                          [16,17,18,19,20]]

    def createTable(self):
        # create the view
        tv = QTableView()

        # set the table model
        header = ['col_0', 'col_1', 'col_2', 'col_3', 'col_4']
        tablemodel = MyTableModel(self.tabledata, header, self)
        tv.setModel(tablemodel)

        # set the minimum size …
Run Code Online (Sandbox Code Playgroud)

python row button qtableview qabstracttablemodel

10
推荐指数
1
解决办法
2万
查看次数

如何更改QTableView的标题背景颜色

以下是我目前正在尝试的内容.标题文本正确更改颜色,但背景不会更改默认值.

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)

如何设置背景颜色?

c++ qt qtableview qabstracttablemodel

8
推荐指数
1
解决办法
1万
查看次数

编辑QTableView单元格时设置初始文本

我已经将QAbstractTableModel子类化并覆盖了flags()方法,因此某些表格单元格是可编辑的.问题是当我开始编辑时,现有的单元格值被删除.我想最初选择现有的单元格值.我怎样才能做到这一点?

qt qtableview qabstracttablemodel

7
推荐指数
1
解决办法
1933
查看次数

使用QAbstractTableModel在pyqt中编辑表

我正在尝试在PyQt中创建一个可编辑的表.这是仅显示表格的代码:

import sys
from PyQt4 import QtGui, QtCore
from PyQt4.QtCore import *
from PyQt4.QtGui import *

# données à représenter
my_array = [['00','01','02'],
            ['10','11','12'],
            ['20','21','22']]

def main():
    app = QApplication(sys.argv)
    w = MyWindow()
    w.show()
    sys.exit(app.exec_())

# création de la vue et du conteneur
class MyWindow(QWidget):
    def __init__(self, *args):
        QWidget.__init__(self, *args)

        tablemodel = MyTableModel(my_array, self)
        tableview = QTableView()
        tableview.setModel(tablemodel)

        layout = QVBoxLayout(self)
        layout.addWidget(tableview)
        self.setLayout(layout)

# création du modèle
class MyTableModel(QAbstractTableModel):
    def __init__(self, datain, parent = None, *args):
        QAbstractTableModel.__init__(self, parent, *args)
        self.arraydata …
Run Code Online (Sandbox Code Playgroud)

python user-interface pyqt4 pyside qabstracttablemodel

7
推荐指数
1
解决办法
1万
查看次数

Qt删除QTableView中的选定行

我想在单击delete按钮时从表中删除选定的行.

但我找不到有关删除Qt文档中的行的任何内容.有任何想法吗?

图片

c++ qt qtableview qabstracttablemodel

7
推荐指数
2
解决办法
2万
查看次数

我如何调用dataChanged

以下是我添加的行类.它是由代码而不是表调用的,我希望它在添加新行时正确调用dataChanged,虽然这不起作用,但表没有做任何事情.我究竟做错了什么?

void MyModel::add(const Person& p)
{
    people.push_back(p);

    QModelIndex top = createIndex(people.count() - 1, 0, 0);
    QModelIndex bottom = createIndex(people.count() - 1, 3, 0);

    emit dataChanged(top, bottom); // emit layoutChanged() if headers changed
}
Run Code Online (Sandbox Code Playgroud)

c++ qt4 qtableview qabstracttablemodel

6
推荐指数
1
解决办法
7246
查看次数

标签 统计

qabstracttablemodel ×10

qtableview ×9

qt ×7

c++ ×5

python ×2

qt4 ×2

row ×2

button ×1

pyqt4 ×1

pyside ×1

user-interface ×1