我想用正方形单元格制作一个8 * 8的桌子(一个棋盘)。现在,我有了制作表格的代码,但是不知道如何将单元格调整为正方形。
我也想将碎片图片放入单元格中。我该怎么办?
这是我的代码:
#include <QtGui/QApplication>
#include "mainwindow.h"
#include <QHBoxLayout>
#include <QTableWidget>
class Table : public QWidget
{
public:
Table(QWidget *parent = 0);
};
Table::Table(QWidget *parent)
: QWidget(parent)
{
QHBoxLayout *hbox = new QHBoxLayout(this);
QTableWidget *table = new QTableWidget(8 , 8 , this);
hbox->addWidget(table);
setLayout(hbox);
}
int main(int argc, char *argv[])
{
QApplication a(argc, argv);
Table t;
t.show();
return a.exec();
}
Run Code Online (Sandbox Code Playgroud)
编辑:
如果有人也可以帮助我加载图像作为单元格的背景,将不胜感激!我使用此代码,并且编译器不会生成错误,但是程序无法运行。我认为问题出在table->item(0,0)。我应该先初始化吗?
QString fileName = "1.bmp";
QPixmap pic (fileName);
QIcon icon (pic);
table->item(0,0)->setIcon(icon);
Run Code Online (Sandbox Code Playgroud) 我有一个QTableWidget,我无法在其中显示任何内容.
以下内容出现在主窗口的构造函数中:
ui->tableWidget->setItem(0,0,new QTableWidgetItem("Item1"));
ui->tableWidget->setItem(0,1,new QTableWidgetItem("Item2"));
ui->tableWidget->setItem(0,2,new QTableWidgetItem("Item3"));
Run Code Online (Sandbox Code Playgroud)
当我运行应用程序时,表格小部件显示,但项目不显示.
我尝试ui->tableWidget->insertRow(0);在上面的代码之前添加,但它没有用.
我有一个包含字符串的数组,我想将每个字符串添加到的不同行和同一列中tableWidget。
我正在使用该函数setItem更改所需的字段,但出现错误QTableWidget.setItem(int, int, QTableWidgetItem): argument 3 has unexpected type 'str'。我搜索了一下,我想我必须使用函数QTableWidgetItem(here)将字符串转换为tableWidgetItem,但是,我不知道如何使用该函数以及“类型”的含义(整数值)。
一个(具体的)示例如何使用该函数将字符串转换为tableWidgetItem会很有帮助。
到目前为止,我的代码如下所示:
pc = 2
i = 0
while i <= pc:
self.tableWidget.insertRow(i)
self.tableWidget.setItem(i, 0, parameter[i])
i += 1
Run Code Online (Sandbox Code Playgroud)
这也将是有益的,如果有人指出,如果有更好的方法来将字符串添加到一个tableWidget比setItem。
考虑一个QTableWidget和两个按钮"向上移动"和"向下移动".单击向上移动,当前行应向上移动一行,类似于"向下移动".
实现相应的上移和下移功能的最简单方法是什么?
如何用最高数字对pyqt中的coloumn进行排序?目前我有setSortingEnabled(True),并且只按最大数量(例如1,1,1,1,2,2,2,3,3)对其进行排序,我希望以最高数字(例如58,25)进行排序. ,15,10).谢谢!
数据更新:
def setmydata(self):
for n, key in enumerate(self.data):
for m, item in enumerate(self.data[key]):
newitem = QtGui.QTableWidgetItem(item)
self.setItem(m, n, newitem)
Run Code Online (Sandbox Code Playgroud)
整码:
import sys
from PyQt4.QtGui import QTableWidget
from PyQt4 import QtGui,QtCore,Qt
import MySQLdb as mdb
from functools import partial
import time
class Window(QtGui.QDialog):
process_column_signal = QtCore.pyqtSignal()
def __init__(self,parent=None):
super(Window, self).__init__()
self.layout = QtGui.QVBoxLayout(self)
self.db = mdb.connect('serv','user','pass','db')
self.model = self.db.cursor()
self.initialData = self.get_data_status()
self.table1 = MyTableStatus(self.initialData, 145, 4)
callback = partial(self.process_column,self.table1)
self.process_column_signal.connect(callback)
self.layout.addWidget(self.table1)
self.timer_status = QtCore.QTimer()
self.timer_status.timeout.connect(self.updateAllViews)
self.timer_status.timeout.connect(self.some_method) …Run Code Online (Sandbox Code Playgroud) 有没有办法禁止QTableWidget中除数字(0-9)之外的任何字符?对于QLineEdits,我使用的是RegEx验证器,但这不适用于QTableWidgets.我想把QLineEdits作为CellWidgets插入到表中,但后来我不得不在我的代码中重写了大量的函数.那么,还有其他(直接)方法吗?
我有用QTableWidget创建的这个小部件:

我希望我的表的列调整大小以占据窗口小部件的整个宽度,而对于行是可以的.我知道有一个像我一样的类似问题但是我无法以这种方式解决它.这是我的代码
void MainWindow::createTable(int rows, int columns) {
mainList = new QTableWidget;
QStringList headerLabels;
headerLabels << "Title" << "Director" << "Year" << "Counter" << "Rating";
mainList->setRowCount(rows);
mainList->setColumnCount(columns);
mainList->setHorizontalHeaderLabels(headerLabels);
mainList->setEditTriggers(QAbstractItemView::DoubleClicked | QAbstractItemView::SelectedClicked);
mainList->setSelectionBehavior(QAbstractItemView::SelectRows);
mainList->resizeColumnsToContents();
mainList->setSizePolicy(QSizePolicy::Expanding, QSizePolicy::Expanding);
setCentralWidget(mainList);
}
Run Code Online (Sandbox Code Playgroud) 我有一个创建随机数据的类,该数据想在主窗口的表视图中显示。
我通过Designer将一个表视图添加到主窗口,并将其称为tblData。我怀疑问题与此有关,因为当我调用构造函数时,具有某些实现的ui文件已经存在。
我已从http://qt-project.org/doc/qt-5/qtablewidget.html中获取“详细说明”部分作为指导。...
但是,该表保持为空。我不明白为什么...非常感谢。
include "mainwindow.h"
#include "ui_mainwindow.h"
#include <QDebug>
MainWindow::MainWindow(QWidget *parent) :
QMainWindow(parent),
ui(new Ui::MainWindow)
{
ui->setupUi(this);
QStringList headers;
headers << "Datapoints";
Dataset *myData;
myData = new Dataset();
myData->createRandomData(10); // create a ten element vector
QVector<int> data;
data = myData->getDataVector(); // data vector created in class Dataset
qDebug() << data;
int i;
for (i = 0 ; i < data.size() ; i++){
QString datapoint;
datapoint = QString::number(data[i]);
QTableWidgetItem * newItem = new QTableWidgetItem(datapoint);
ui->tblData->setItem(i, 0, newItem); // …Run Code Online (Sandbox Code Playgroud) 我对PyQt4的QTableWidget有疑问。假设我有一个QTableWidget,我想在其中使用以下命令将事件连接到单元格单击:
table.cellClicked.connect(cellClick)
Run Code Online (Sandbox Code Playgroud)
然后,cellClick函数完成其工作。关键是:有些单元格包含一个按钮,例如这样(例如,坐标0,0):
button = QtGui.QPushButton()
table.setCellWidget(0,0, button)
Run Code Online (Sandbox Code Playgroud)
现在是我的问题。单元格中的按钮(占用整个单元格空间)的存在会完全禁用cellClicked-单元格不会被单击,因此无法检测到该操作。但是我确实希望我的按钮充满整个单元格。
简而言之,我的问题是-当内部有一个按钮时,如何选择(单击)QTableWidget单元格?
我正在使用基于Qt4的PyQt。我的编辑器是PyCharm 2017.3,我的python版本是3.4。我正在从网站上抓取一些文字。我试图将文本与QTableWidget中单元格的中心对齐。
item = QTableWidgetItem(scraped_age).setTextAlignment(Qt.AlignHCenter)
self.tableWidget.setItem(x, 2,item)
Run Code Online (Sandbox Code Playgroud)
因此,在将项目放入单元格时,我正在尝试根据文档进行对齐。问题是没有显示数据。
当我删除setTextAlignment方法时,它确实显示了,如下所示
item = QTableWidgetItem(scraped_age)
self.tableWidget.setItem(x, 2,item)
Run Code Online (Sandbox Code Playgroud)