如果一个单元格有一些数据,请使用
tableWidget->item(8,0)->setBackgroundColor(Qt::red);
Run Code Online (Sandbox Code Playgroud)
更改背景颜色将起作用,但如果单元格为空,则会失败.
我想添加一个右键菜单来删除,重命名或打开QTAbleView单元格中每个单元格中的图像,我试过,发现每个人都试图将菜单添加到tableview中的标题,我试过下面但是看起来似乎不在下面的代码中工作..
class GalleryUi(QtGui.QTableView):
""" Class contains the methods that forms the
UI of Image galery
"""
def __init__(self, imagesPathLst=None, parent=None):
super(GalleryUi, self).__init__(parent)
self.__sw = QtGui.QDesktopWidget().screenGeometry(self).width()
self.__sh = QtGui.QDesktopWidget().screenGeometry(self).height()
self.__animRate = 1200
self._imagesPathLst = imagesPathLst
self._thumb_width = 200
self._thumb_height = self._thumb_width + 20
self.setUpWindow(initiate=True)
self._startControlBar()
self._connections()
def contextMenuEvent(self, event):
index = self.indexAt(event.pos())
menu = QtGui.QMenu()
renameAction = QtGui.QAction('Exit', self)
renameAction.triggered.connect(self.close)
self.menu.addAction(renameAction)
self.menu.popup(QtGui.QCursor.pos())
def closeEvent(self,event):
# in case gallery is launched by Slideshow this is not needed
if hasattr(self, 'bar'):
self.bar.close()
def …
Run Code Online (Sandbox Code Playgroud) 我有一个带有N列的QTableWidget,当设置列数时,它们会自动填充整个QTableWidget.当我尝试将列数动态更改为N/2列时,每列的大小不会更改.这导致QTableWidget的右半部分只是空格.
相反,如果我将列数重置为2*N,则列宽适当调整自己并填充QTableWidget.
我想知道如何在没有QTableWidget任何空格的情况下重置列数和行数?
我是pyqt4的新手,我无法弄清楚如何做到这一点.我有一个包含数据的QtableWidget.我想改变tableWidget的单元格的一些背景颜色.
我试过self.tableWidget.item(3, 5).setBackground(QtGui.QColor(100,100,150))
,它返回此错误:
AttributeError:'NoneType'对象没有属性'setBackground'
我该怎么办?
我想将附加数据与插入表中的每个QTableWidgetItem相关联,以便将来在表项上单击时使用该数据.但是这些数据不应该是可见的.我怎样才能做到这一点?
我很好奇如何在数据库中显示图像QTableView
.
有没有这样的东西QTableWidgetItem
我可以使用它QTableView
?
我用QSqlTableModel
.
for(int i=0; i<page.size(); i++){
User user= Poco::AnyCast<User>(*it);
ui.table->setItem(i,0,new QTableWidgetItem(user.userName));
ui.table->setItem(i,1,new QTableWidgetItem(user.sex));
ui.table->setItem(i,2,new QTableWidgetItem(user.age));
QPushButton* btn_edit = new QPushButton();
btn_edit = new QPushButton();
btn_edit->setText("Edit");
ui.table->setCellWidget(i,3,(QWidget*)btn_edit);
++it;
}
Run Code Online (Sandbox Code Playgroud)
我使用函数setCellWidget()将QPushButton添加到单元格中,我知道,如果它是QTableWidgetItem,我可以使用:
ui.table->item(0,3)->setTextAlignment(QT::AlignHCenter)
Run Code Online (Sandbox Code Playgroud)
但它是一个小工具,
QTableWidgetItem item = ui.table->item(0,3);
Run Code Online (Sandbox Code Playgroud)
该项为null.
我可以通过使用获得细胞
ui.table->cellWidget(0,3).
Run Code Online (Sandbox Code Playgroud)
如何使按钮在单元格中居中?
我了解如何QTableWidget
通过观察信号来检测单元格中的点击cellClicked(int row, int column)
(下面的代码)。
我想对水平标题的单元格执行相同的操作,并获取单击的标题单元格的文本。我怎么做?
// mainwindow.h
class MainWindow : public QMainWindow {
Q_OBJECT
QWidget widget;
QVBoxLayout vLayout {&widget};
QStringList headers {"asdca", "asdcad", "asdcadca"};
QTableWidget table {5, headers.size()};
public:
MainWindow(QWidget *parent = 0);
~MainWindow() {}
};
// mainwindow.cpp
MainWindow::MainWindow(QWidget *parent) : QMainWindow(parent) {
setCentralWidget(&widget);
vLayout.addWidget(&table);
table.setHorizontalHeaderLabels(headers);
connect(&table, &QTableWidget::clicked, []{
qDebug() << "click!!" ;
});
}
Run Code Online (Sandbox Code Playgroud) 我想删除QPushButton
点击的行如何可能我认为使用插槽是合理的但如何做到这一点不知道,如果您有任何想法如何获取一行选定的按钮请分享,谢谢。
这是我的桌子
这是我向 QTableWidget 添加行的代码
MainWindow::MainWindow(QWidget *parent) :
QMainWindow(parent),
ui(new Ui::MainWindow)
{
ui->setupUi(this);
for(int i = 0; i<20;i++)
ui->tableWidget->insertRow(ui->tableWidget->rowCount());
QVector<QString>vec;
vec<<"first"<<"sec"<<"third"<<"for"<<"fif"<<"first"<<"sec"
<<"third"<<"for"<<"fif";
vec<<"first"<<"sec"<<"third"<<"for"<<"fif"<<"first"<<"sec"
<<"third"<<"for"<<"fif";
for(int i = 0; i<ui->tableWidget->rowCount();i++)
{
for(int j = 0; j<ui->tableWidget->columnCount();j++)
{
if(j == 0)
{
QWidget* pWidget = new QWidget();
QPushButton* btn_edit = new QPushButton();
btn_edit->setText("Remove");
QHBoxLayout* pLayout = new QHBoxLayout(pWidget);
pLayout->addWidget(btn_edit);
pLayout->setAlignment(Qt::AlignCenter);
pLayout->setContentsMargins(0, 0, 0, 0);
pWidget->setLayout(pLayout);
ui->tableWidget->setCellWidget(i, j, pWidget);
continue;
}
QTableWidgetItem*item = new QTableWidgetItem(vec[i]);
item->setFlags(item->flags() ^ Qt::ItemIsEditable);
ui->tableWidget->setItem(i, j, item); …
Run Code Online (Sandbox Code Playgroud) 有没有办法将QCheckBox
单元格小部件放置在单元格QTableWidget
的中心,而不是在左侧,而不需要额外的QWidget
并将复选框添加到它的布局中?
qtablewidgetitem ×10
qt ×8
qtablewidget ×8
c++ ×6
pyqt ×2
qt4 ×2
qt5 ×2
qtableview ×2
contextmenu ×1
pyqt4 ×1
python ×1
python-2.7 ×1
qcheckbox ×1
qt4.8 ×1