标签: qtableview

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万
查看次数

如何告诉Qt始终在QTableView中显示编辑器?

我有一个QTableView,我想在编辑模式下显示最后一列.(这是一个QComboBox,用户应该能够始终更改值.)

我想我已经在Qt文档中看到了解决方案,但我再也找不到了.有一个简单的方法吗?

我想我可以通过使用openPersistentEditor()每个单元格来存档这种效果,但我正在寻找更好的方法.(比如只为整列指定一次.)

qt qtableview qitemdelegate

9
推荐指数
1
解决办法
7220
查看次数

确定QTableView是否具有打开的编辑器

有没有办法确定QTableView当前单元格中是否有一个打开的编辑器?我需要处理以下情况:

  • 用户双击单元格并编辑数据,但使单元格处于"编辑"状态.
  • 在UI的另一部分,执行一个操作来更改基础模型的选定行.
  • 回到我的视图,我想确定新选择的行是否与打开的行相同.如果没有,我需要采取行动.(提示用户?自动提交?还原?)

我看到如何获取当前项目,并可以获得该项目的委托,但我没有看到任何isEditMode()我希望找到的属性.

有人能指出我正确的方向吗?

qt qtableview

9
推荐指数
2
解决办法
3875
查看次数

如何在Qt中为QTableView对象获得正确的行高?

从这个屏幕截图中,您可以看到行内的大量空间:

替代文字

我已经使用这些函数来调整大小:

resizeRowsToContents();
resizeColumnsToContents();
Run Code Online (Sandbox Code Playgroud)

如何才能更好地适应细胞/行大小?

c++ qt qt4 qtableview

9
推荐指数
2
解决办法
9753
查看次数

如何删除QStandardItemModel中的垂直标题?

我创建了一个表QTableView和一个QStandardItem小部件.如何从中删除垂直标题QStandardItemModel

c++ qt qtableview qstandarditemmodel

9
推荐指数
1
解决办法
3556
查看次数

QTableView:当用户使用鼠标点击特定单元格时,如何获取数据

实际上我是Qt的新手并且无法QMouseEvent与之匹敌QTableview

请帮助解决这个问题.

qt qtableview

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

Qt:将TableView的宽度调整为内容宽度

我有一个窗口,其中包含QTableView哪些列调整为内容固定宽度.所述QTableView嵌套内的QWidget,反过来嵌套内的QScrollArea是,在又一个嵌套内的选项卡式 QMdiArea这是centralWidgetQMainWindow.

QScrollArea所示,QTableView有额外的空间,我想除去最后一列的权利:

TableView的屏幕截图

我希望QTableView拟合列的确切宽度(即最右边的列后没有额外的空格).

我尝试使用tableView.setFixedWidth(desired_width)但是它唯一可行的方法是迭代所有列并获得它们的宽度并将它们加在一起并添加verticalHeader宽度和滚动条宽度并将其作为传递desired_width.

它确实以这种方式工作,但对于这样一个明显的要求似乎非常复杂:我认为许多程序开发人员希望他们的表的宽度适合列的宽度,这就是让我想知道可能有一种方法在没有额外计算的情况下自动完成并且我不知道.

所以我的问题是:有没有更简单的方法来实现相同的结果?

这是我的代码供参考:

t_main负责创建的模块的代码QMainWindow:

import sys
import t_wdw
from PySide import QtGui

class Main_Window(QtGui.QMainWindow):
    def __init__(self):
        super(Main_Window,self).__init__()
        self.initUI()


    def initUI(self):
        self.statusBar()
        # Defines QActions for menu
        self.new_window=QtGui.QAction("&Window alpha",self)
        self.new_window.triggered.connect(self.open_window)
        # Creates the menu
        self.menu_bar=self.menuBar()
        self.menu1=self.menu_bar.addMenu('&Menu 1')
        self.menu1.addAction(self.new_window)
        # Creates a QMdiArea to …
Run Code Online (Sandbox Code Playgroud)

qt qtableview pyside

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

Qt在QTableview问题中自动完成QCombobox

我有一个QTableView,它有一个带有QComboBox QItemDelegate的列.有一个组合框的完成列表.当您开始输入并按Enter键时,完成正确完成(请注意大写字母)
在进入之前 (按回车) - > 在此输入图像描述

但是,当我按Tab键时,它不会包含大写字母.
在进入之前(按标签) - > 在此输入图像描述

但是当我在一个免费的ComboBox上尝试这个时,它会正确地自动完成
在此输入图像描述(按标签) - > 在此输入图像描述

我没有在任何地方捕获Tab输入事件,所以我不确定是什么导致了这个问题.会是什么呢?

c++ qt qtableview

9
推荐指数
1
解决办法
263
查看次数

将颜色设置为QTableView行

void MyWindow::initializeModelBySQL(QSqlQueryModel *model,QTableView *table,QString sql){
        model = new QSqlQueryModel(this);
        model->setQuery(sql);
}
Run Code Online (Sandbox Code Playgroud)

使用此方法,我可以将QSQlQueryModels设置为我的QTableviews.

但是如何根据单元格值将颜色设置为一行?

qt qt4 qtableview qsqltablemodel

8
推荐指数
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万
查看次数