标签: qtablewidget

如何验证 QTableWidget 中的单元格?

我的工作是pyqt4python3.4我想验证单元格中的文本在引入时是否是浮点数。我怎么做到这一点?

pyqt4 qtablewidget python-3.x

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

如何将数据从 QTableWidget 检索到 Dataframe?

我有一个处于可编辑模式的 QTableWidget,其中用户输入整数,如何生成在此表中输入的数据列表以便对其执行操作,这是我的手动代码:

def dataframe_generation_from_table(self,table):
    number_of_rows = table.rowCount()
    number_of_columns = table.columnCount()

    tmp_df = pd.DataFrame({ 'Date' : [] , str(self.final_lvl_of_analysis) :[],  'Value': []}) 

    for i in range(0,number_of_rows):
        for j in range(0,number_of_columns):
            tmp_item = table.item(i,j)
            tmp_df2 = pd.DataFrame( { 'Date' : [pd.to_datetime(table.horizontalHeaderItem(j).data())] , str(self.final_lvl_of_analysis) :[ str(table.verticalHeaderItem(i).data())], 'Value': [float(tmp_item.data(0))]})
            print tmp_df2
            tmp_df.update(tmp_df2, join = 'left', overwrite = False)

    return tmp_df
Run Code Online (Sandbox Code Playgroud)

另外,我使用以下代码来生成 QTableWidget:

    self.pd_table = QtGui.QTableWidget(self.groupBox_19)
    self.pd_table.setObjectName(_fromUtf8("pd_table"))
    self.pd_table.setColumnCount(0)
    self.pd_table.setRowCount(0)
Run Code Online (Sandbox Code Playgroud)

我的规格是:pandas 0.18.1、PyQt 4 和 Python 2.7

python pyqt pyqt4 qtablewidget pandas

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

QListWidget 拖放通过 setItemWidget 设置的自定义小部件

我使用 QListWidget 通过使用 setItemWidget 设置自定义小部件来显示它们。像这样的东西:

QListWidget* listWidget = new QListWidget;
listWidget->setAcceptDrops(true);
listWidget->setDragDropMode(QAbstractItemView::InternalMove);
listWidget->setDragEnabled(true);
listWidget->setSelectionMode(QAbstractItemView::SingleSelection);

for ( int i = 0 ; i < 50 ; ++i )
{
    ItemWidget* item = new ItemWidget;
    QListWidgetItem* listItem = new QListWidgetItem;
    listItem->setSizeHint(item->sizeHint());
    listWidget->addItem(listItem);
    listWidget->setItemWidget(listItem, item);
}
Run Code Online (Sandbox Code Playgroud)

ItemWidget 源自 QWidget,仅在布局中显示一些自定义数据,如下所示:

ItemWidget::ItemWidget()
{
    QVBoxLayout* layout = new QVBoxLayout;
    layout->setContentsMargins(0, 0, 0, 0);
    layout->setSpacing(0);

    QHBoxLayout* contentLayout = new QHBoxLayout;
    contentLayout->setSizeConstraint(QLayout::SetFixedSize);
    contentLayout->setSpacing(0);

    contentLayout->addSpacing(5);
    contentLayout->setContentsMargins(10, 20, 10, 20);

    QLabel* iconLbl = new QLabel;
    iconLbl->setPixmap(QPixmap(":/icon.png"));
    iconLbl->setMaximumWidth(20);
    contentLayout->addWidget(iconLbl, 0, Qt::AlignTop); …
Run Code Online (Sandbox Code Playgroud)

c++ qt drag-and-drop qtablewidget qt5

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

如何从 QTableWidget 获取选定的组合框值?

我创建了一个 QTableWidget,在其中的一列中,我使用 setCellWidget 函数设置组合框 QComboBox。效果很好。

这就是我设置 qtablewidget 的方式

cb = QComboBox()
cb.addItems(["Java", "C#", "Python"])
qtablewidget.setCellWidget(row_number, column_number , cb )
Run Code Online (Sandbox Code Playgroud)

但现在当我迭代 QTableWidget 时,我无法弄清楚如何获取每行组合框的选定值?

python pyqt qtablewidget qtablewidgetitem pyqt5

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

如何通过单击列标题来按列对 QTableWidget 进行排序?

我正在为我的工作建立一个数据库。我希望能够以类似于通过单击列标题对 Excel 中的元素进行排序的方式对元素进行排序。我正在使用 pandas 库,所以我计划用它进行排序,但我的主要问题是有没有办法在 QTableWidget 中单击标题时运行代码?或者这是不可能的?

python qtablewidget pyside2

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

如何在 PyQt5 中的 QTableWidget 中复制和粘贴多个单元格?

我有一个 Qtablewidget,如下所示。我想从表中复制多个单元格并粘贴到同一个表中的其他行中。

到目前为止,我可以在单个单元上执行相同的操作,但是有没有办法可以同时执行多个单元?

另外,如果可能的话,复制多行并将其粘贴到下面的同一个表中?

我尝试查看 SO 中的一些答案,但没有在 PyQt5 中实现它。

提前致谢。

单行复制/粘贴的片段

多行复制/粘贴的片段

示例代码(由 QtDesigner 提供):

from PyQt5 import QtCore, QtGui, QtWidgets


class Ui_MainWindow(object):
    def setupUi(self, MainWindow):
        MainWindow.setObjectName("MainWindow")
        MainWindow.resize(1048, 600)
        self.centralwidget = QtWidgets.QWidget(MainWindow)
        self.centralwidget.setObjectName("centralwidget")
        self.tableWidget = QtWidgets.QTableWidget(self.centralwidget)
        self.tableWidget.setGeometry(QtCore.QRect(40, 40, 861, 511))
        self.tableWidget.setEditTriggers(QtWidgets.QAbstractItemView.AnyKeyPressed|QtWidgets.QAbstractItemView.DoubleClicked|QtWidgets.QAbstractItemView.EditKeyPressed)
        self.tableWidget.setRowCount(5)
        self.tableWidget.setColumnCount(5)
        self.tableWidget.setObjectName("tableWidget")
        item = QtWidgets.QTableWidgetItem()
        self.tableWidget.setHorizontalHeaderItem(0, item)
        item = QtWidgets.QTableWidgetItem()
        self.tableWidget.setHorizontalHeaderItem(1, item)
        item = QtWidgets.QTableWidgetItem()
        self.tableWidget.setHorizontalHeaderItem(2, item)
        item = QtWidgets.QTableWidgetItem()
        self.tableWidget.setHorizontalHeaderItem(3, item)
        item = QtWidgets.QTableWidgetItem()
        self.tableWidget.setHorizontalHeaderItem(4, item)
        item = QtWidgets.QTableWidgetItem()
        self.tableWidget.setItem(0, 0, item)
        item = QtWidgets.QTableWidgetItem()
        self.tableWidget.setItem(0, 1, item)
        item …
Run Code Online (Sandbox Code Playgroud)

python pyqt qt-designer qtablewidget pyqt5

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

是否可以在溢出的 QTableWidgetItem 中首先显示字符串的右侧?

系统会提示用户一个文件对话框,并选择一个完整路径,然后将其放入父 QTableWidget 内的 QTableWidgetItem 单元格内。目前,当项目中的文本过多且可以显示的内容过多时,它将首先显示左侧部分。

如果完整路径是C:\Users\JohnDoe\Example_File1.txt它将显示: C:\Users\JohnDoe\Ex...

我希望用户能够在溢出截止发生之前首先看到正确的部分(文件基本名称),以便它会显示:

...Doe\Example_File1.txt

我尝试实现以下代码,该代码更改了对齐方式,但似乎没有按上述方式工作:

    obj = self.QTable1 #A 10x3 table
    for x in range(obj.rowCount()):

        item = obj.item(x,2) #Change alignment for 3rd column (Where paths are stored)
        item.setTextAlignment( QtCore.Qt.AlignRight)
Run Code Online (Sandbox Code Playgroud)

python qtablewidget pyqt5 pyside2

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

QTableWidget中的QComboBox和QSpinBox具有适当的对齐方式

如何创建一个包含2个columnes的QTable小部件,在第一列中有一个QComboBox,在第二列中有一个QSpinBox,以便组合框获取表的所有空间,只有一个非常小的位置留给QSpinBox(用于2-3位数).

c++ qt combobox spinner qtablewidget

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

检索作为QLineEdit小部件的QTableWidget单元格的值

我创建了一个QLineEdit,设置一个验证器并使用以下代码将其放在表中:

ui->moneyTableWidget->setCellWidget(rowsNum, 1, newQLineEdit);
Run Code Online (Sandbox Code Playgroud)

然后,我有另一个类来操作表的数据,做一个列的每个值的总和.这是代码:

int Calculator::calculatePricesSum(QTableWidget &moneyTableWidget){
    double total = 0;
    QWidget *tmpLineEdit;
    QString *tmpString;
    for(int row=0; row<moneyTableWidget.rowCount(); row++){
        tmpLineEdit = (QLineEdit*)moneyTableWidget.cellWidget(row,1);       
        tmpString = tmpLineEdit.text();
        total += tmpString->toDouble();
    }
    return total;
}
Run Code Online (Sandbox Code Playgroud)

但是建筑失败并出现此错误:

/ home/testpec/src/nokia QT/MoneyTracker-build-simulator /../ MoneyTracker/calculator.cpp:11:错误:在分配时无法将'QLineEdit*'转换为'QWidget*'

为什么这个转换错误?

另一个子问题:将表作为参考传递可以节省内存吗?这可能是问题吗?我正在为诺基亚智能手机开发,我认为按价值传递对象是浪费内存......(对不起,如果是一个愚蠢的问题,但我对C++和所有指针的东西有点生疏......)

c++ qt qtablewidget qlineedit

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

Python:QTableWidget中的数字排序

我需要将我的QTableWidget的第一列填充为:行:1,行:2 ...行:100,但排序不能按预期工作(数字).使用此代码排序工作正常,但我没有得到预期的文本:

for i in range(0, self.rows):
    item = QtGui.QTableWidgetItem()
    item.setData(Qt.DisplayRole, "Row: %s" %(i) )
    item.setData(Qt.EditRole, i)
    self.ui.tableWidget.setItem(i, 0, item)
Run Code Online (Sandbox Code Playgroud)

我得到:1,2,3,4 ......而不是Row:1,Row:2,Row:3 ...我期望EditRole将用于编辑目的(用于数字排序,它工作正常)但我还期望显示文本,因为它是使用DisplayRole设置的.我能以某种方式这样做,或者为了排序而编写函数是唯一的方法吗?

python sorting pyqt qtablewidget

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