我试图让我的QTableWidget中的某些单元格根据项目(单元格)中包含的信息具有不同的彩色边框.
我不想选择那些单元格并使用选择颜色样式,因为需要选择/突出显示不同的单元格.
对于前 我有一个包含3列和3行的表.所有单元格中的每一个都有简单的文本.
[] [名称] [值] [单位]
[1] [一] [1] [cm]
[2] [二] [2] [在]
[3] [三] [3] [m]
第一行由用户选择并突出显示,后台进程更新表中的值并将第3行中的值更新为4.现在我想让第3行周围有红色边框.
这是我的问题细节:我有这些小部件 - QMenuBar,QTableWidget和QToolbar.这是我的代码示例:
import sys
from PySide import QtGui
class Example(QtGui.QMainWindow):
def __init__(self):
super(Example, self).__init__()
self.header_lbls = ['Name', 'Second Name', 'Surname', 'Birth Date', 'Phone Number', 'Skype', 'E-mail']
self.table = QtGui.QTableWidget(10, 7)
self.table.setHorizontalHeaderLabels(self.header_lbls)
self.setCentralWidget(self.table)
#ACTIONS
self.createActions()
#MENUBAR
self.createMenus()
#TOOLBAR
self.createToolbar()
#STATUSBAR
self.creatStatusbar()
def contextMenuEvent(self, event):
self.menu = QtGui.QMenu(self.table)
self.menu.addAction(self.aboutAct)
self.menu.exec_(QtGui.QCursor.pos())
def createActions(self):
self.exitAct = QtGui.QAction('E&xit', self, shortcut='Ctrl+Q',
statusTip='Exit the application', triggered=app.exit)
def createMenus(self):
self.menubar = self.menuBar()
self.fileMenu = self.menuBar().addMenu("&File")
self.fileMenu.addAction(self.exitAct)
def createToolbar(self):
self.toolbar = self.addToolBar('Toolbar')
self.toolbar.addAction(self.settingsAct)
self.toolbar.addSeparator()
self.toolbar.addAction(self.exitAct)
def creatStatusbar(self):
self.statusBar() …Run Code Online (Sandbox Code Playgroud) 在QT 4.7中,我试图在QTableWidget中编辑一个QTableWidgetItem,其余的所有列都应该只为我读取.我在这里遇到问题.
我通过谷歌和stackoverflow检查了一些样本,但未能实现这一点.我尝试的一些选项是,
我通过调用insertRow(rownumber)来添加行来创建行.
试用版1:我在动态插入行时执行以下操作
使用以下代码添加列以禁用编辑
QTableWidgetItem qit("");
qit.setflags(qit.flags() & ~Qt::ItemIsEditable)
qtable.setitem(row,column, &qit);
而对于其他列,我没有设置标志
上述方法无效.我可以编辑所有列(甚至是我否定了可编辑选项的列)
试用2:完成以上所有操作qtable.setEditTriggers(Qt::NoEditTriggers),然后在需要的地方将列设置为可编辑.
但是此选项会使所有列都不可编辑.
但我没有看到任何人在任何论坛上抱怨这样的人.所以我一定是犯了一些愚蠢的错误.
有人遇到这样的问题,如果是,请通过回答帮助.
我把图标作为项目放在表格中:
QTableWidget *table = new QTableWidget(this);
QTableWidgetItem *item = new QTableWidgetItem;
item->setSizeHint(QSize(100, 100));
item->setIcon(QIcon(fileName));
table->setItem(0, 0, item);
Run Code Online (Sandbox Code Playgroud)
然而,无论图标的大小如何,它们在表格中都显示得非常小.
我不关心文字.
我怎样才能让它们更大?
我在 python 中使用 Pyqt4 进行 GUI 编程。如何在 QTableWidget 中隐藏垂直或水平线?
我正在尝试对 QtableWidget 中的行求和,并且在这样做时出现分段错误,不确定是什么原因造成的,但我认为这与我将单元格小部件项目设置为旋转框的事实有关,而我不是正确访问它们。当我在 cellChanged 事件中设置它时,我也无法在旋转框更改时触发 totalRow 函数。
totalRow 函数(假设在单元格更改时总计行)
int MainWindow::totalRow(int srow)
{
int sum = 0;
int num_col = ui->tblScores->columnCount();
int num_row = ui->tblScores->rowCount();
for (int j = 0; j < num_col - 1 ; ++j) {
QTableWidgetItem *tableItem = ui->tblScores->item(srow,j);
sum += tableItem->text().toInt();
cout << sum << endl;
}
QTableWidgetItem *tableItem = new QTableWidgetItem;
tableItem->setText(QString::number(sum));
ui->tblScores->setItem(srow,num_col - 1,tableItem);
return sum;
}
Run Code Online (Sandbox Code Playgroud)
setupTable 函数(这是将表格项设置为旋转框的方法)
void MainWindow::setupTable()
{
int num_col = ui->tblScores->columnCount();
int num_row = ui->tblScores->rowCount();
for (int i = …Run Code Online (Sandbox Code Playgroud) 在我的应用程序中,我使用API调用获取记录,然后我动态地将数据添加到QTableWidget.到目前为止,这是我的代码片段:
class TriageUI(QtGui.QMainWindow):
def __init__(self):
QtGui.QMainWindow.__init__(self)
self.ui = Ui_TriageWindow()
self.setWindowFlags(QtCore.Qt.WindowStaysOnTopHint)
self.move(QtGui.QApplication.desktop().screen().rect().center()- self.rect().center())
self.ui.setupUi(self)
self.update_records()
def update_records(self):
#items are the results from the API fetch
items = json.loads(get_triage_queue(COOKIES, SERVER, PORT))
rows = len(items['objects'])
self.ui.tableWidget.setColumnCount(5)
self.ui.tableWidget.setRowCount(rows)
index = 0
column = 0
for j in items['objects']:
for key, value in j.iteritems():
f = QtGui.QTableWidgetItem(str(value))
self.ui.tableWidget.setItem(index, column, QtGui.QTableWidgetItem(f))
column = column + 1
Run Code Online (Sandbox Code Playgroud)
但是,我希望能够定期(例如15秒后)对数据进行API调用,然后将结果中的任何新数据项添加到表中.我怎样才能做到这一点.
先感谢您.
我想突出显示表格中第一列中具有相同值但在任何其他单元格中具有不同值的所有单元格。因此,例如,如果我的表中有两条记录:
test, 25, 15, 45
test, 25, 5, 45
Run Code Online (Sandbox Code Playgroud)
我想突出显示值 15 和 5。
我已经尝试了以下代码,但无论我正在访问什么项目,我从项目调用中获得的文本始终是“测试”。
// Highlight differences in the data
for( int row=0; row < ui->table_Data->rowCount(); row++ )
{
qDebug() << "going through rows";
for( int remaining_rows=row+1; remaining_rows < ui->table_Data->rowCount(); remaining_rows++)
{
qDebug() << "going through remaining rows";
for( int column=0; column<ui->table_Data->columnCount(); column++ )
{
qDebug() << "going through columns";
qDebug() << row << ":" << remaining_rows << column;
qDebug() << ui->table_Data->itemAt(row,column)->text();
qDebug() << ui->table_Data->itemAt(remaining_rows,column)->text();
if( ui->table_Data->itemAt(row,column)->text().compare(ui->table_Data->itemAt(remaining_rows,column)->text()) != 0)
{ …Run Code Online (Sandbox Code Playgroud) 我有一个发票表格,我用它来创建发票和显示存储发票的结果。当我试图从数据库读回数据并显示它时,我收到错误
QTableWidget: 不能插入一个已经被另一个 QTableWidget 拥有的项目 QTableWidget: 不能插入一个已经被另一个 QTableWidget 拥有的项目 QTableWidget: 不能插入一个已经被另一个 QTableWidget 拥有的项目 QTableWidget: 不能插入一个已经被另一个 QTableWidget 拥有的项目另一个 QTableWidget QTableWidget: 不能插入另一个 QTableWidget 已经拥有的项目
我不明白为什么会这样。我试图运行的查询将返回 4 行。我的代码在下面
QString CompanyID;
int row = 0;
ui->comboBox_Invoice_Account_Search->setCurrentIndex(1);
QSqlQuery Account_Name_Query;
QTableWidgetItem *Qty_Search = new QTableWidgetItem();
QTableWidgetItem *Description_Search = new QTableWidgetItem();
QTableWidgetItem *Product_Code_Search = new QTableWidgetItem();
QTableWidgetItem *Unit_Price_Search = new QTableWidgetItem();
QTableWidgetItem *Total_Price_Search = new QTableWidgetItem();
while(Query.next())
{
CompanyID = Query.value(10).toString();
//qDebug() << "CompanyID " << CompanyID;
ui->lineEdit_Invoice_VAT->setText(Query.value(9).toString());
ui->lineEdit_Invoice_Total->setText(Query.value(8).toString());
ui->lineEdit_Goods_Total->setText(Query.value(7).toString());
Qty_Search->setText(Query.value(3).toString());
Description_Search->setText(Query.value(4).toString());
Product_Code_Search->setText(Query.value(5).toString());
Unit_Price_Search->setText(Query.value(6).toString());
Total_Price_Search->setText(Query.value(7).toString());
ui->tableWidget_Invoice->setItem(row, 0, …Run Code Online (Sandbox Code Playgroud) 我想知道当我在 PyQt 中按下 Tab 键时如何从一个表格小部件移动到下一个小部件。
当前小部件序列由行编辑 > 组合框 > 表格小部件 > 按钮组成。在行编辑中,当您在开始时按 Tab 键时,组合框 > 表格小部件将依次移动到。然而,在 table-widget 中,反复移动到最后,它再次移动到 table-widget 的0,0行和列,而不是下一个小部件(按钮)。
我该如何解决?
qtablewidget ×10
qt ×7
python ×4
c++ ×3
pyqt4 ×2
contextmenu ×1
icons ×1
keyboard ×1
pyqt ×1
pyqt5 ×1
pyside ×1
qt4 ×1
sqlite ×1
tab-ordering ×1