我正在填充QTreeWidget的一个分支,然后将分支的父节点上的展开属性设置为true.itemExpanded信号响应时触发,这不是我想要的.在一段代码中是否存在抑制或吸收信号的临时方法?
我正在编写一个具有QTreeWidget的应用程序,该QTreeWidget通过解析包含树级别的XML文件来填充.如果我选择顶级复选框,我还需要检查所有子级复选框.
我已经使用XML解析器工作并使用带有复选框的QTreeWidgetItems填充QTreeWidget,但它们只能单独检查.
我目前正在阅读Qt的模型/视图教程,但我仍然不确定是否应该为我的Qt程序使用模型/视图或小部件:
我需要做一个记录器应用程序,它将监视模拟环境中的所有信息.基本情景可能是:
等等
此记录器应用程序的需求是实时获取此信息,并且收集的数据将不可编辑.从本质上讲,这只是为了显示日志.
那么,使用模态/视图或小部件是否值得我想做什么?
谢谢
我有一个QTreeWidget
带QTreeWidgetItem
项目,但只有根节点显示其图标:
我一直在摸不着什么可以把它关掉,任何提示?
ui->folderTree1->setUpdatesEnabled( false );
QTreeWidgetItem* treeRoot1 = new QTreeWidgetItem(ui->folderTree1);
treeRoot1->setIcon(0, QIcon(":/icons/black.png"));
treeRoot1->setText(0, tr("Root"));
treeRoot1->setExpanded(true);
addFoldersToTreeView(treeRoot1, ui->filePath1->text(), ui->filePath2->text());
ui->folderTree1->setUpdatesEnabled( true );
}
void MainWindow::addFoldersToTreeView(QTreeWidgetItem* currentWidget, QString leftPath, QString rightPath)
{
qDebug() << "MainWindow::addFoldersToTreeView" << leftPath;
QDir dir(leftPath);
QDir dir2(rightPath);
/* Add the folders */
foreach (QString subDir, dir.entryList(QDir::Dirs | QDir::NoDotAndDotDot))
{
QString sImageName = ":/icons/black.png";
QTreeWidgetItem* newItem = new QTreeWidgetItem(currentWidget);
qDebug() << "MainWindow::addFoldersToTreeView.sImageName" << sImageName;
newItem->setIcon(0, QIcon(sImageName));
newItem->setText(0, subDir);
newItem->setExpanded(true);
newItem->setData(0, 1, QVariant(leftPath + QDir::separator() + …
Run Code Online (Sandbox Code Playgroud) 我正在使用QStandardItemModel和QStandardItem.
我不想写自己的模型和任何代表.
我只想在第二栏中找到QComboBox'的复选框树...
m_model->setColumnCount(2);
for (int i = 0; i < sectionCount; i++)
{
QStandardItem * section = new QStandardItem(tr("Section %1").arg(i+1));
section->setCheckable(true);
section->setCheckState(Qt::Checked);
for (int j = 0; j < itemsCount; j++)
{
QStandardItem * item = new QStandardItem(tr("Item %1").arg(j+1));
item->setCheckable(true);
item->setCheckState(Qt::Checked);
QStandardItem * item2 = new QStandardItem("xxx");
section->appendRow(QList<QStandardItem*>() << item << item2);
QComboBox * combo = new QComboBox();
QModelIndex index = m_model->index(j, 1, );
// HERE i have index = {-1;-1}
ui->treeView_options->setIndexWidget(index, combo);
}
m_model->appendRow(section);
}
Run Code Online (Sandbox Code Playgroud)
是否有可能以这种方式使用setIndexWidget?
更新:
我在第二栏中没有QComboBox …
我有一个QTreeWidget
里面有一些物品。但是,由于我的数据结构,我需要QTreeWidget
(或QTreeWidgetItem
)在有人完成编辑时告诉我。
QTreeWidget
我已经有了和 的子类QTreeWidgetItem
,如果这样可以更容易解决的话。
我有一个QTreeWidget
,我想在某个索引处插入一个孩子。我试过
void QTreeWidgetItem::insertChild ( int index, QTreeWidgetItem * child )
Run Code Online (Sandbox Code Playgroud)
但是我放置的任何索引,它都会在父级拥有的所有子级的末尾插入子级。
我有一个自定义的 QTreeWidget 类,其dropEvent()
方法被重写。方法如下:
void QCustomTreeWidget::dropEvent(QDropEvent * event)
{
QModelIndex droppedIndex = indexAt(event->pos());
if (!droppedIndex.isValid())
return;
// other logic
QTreeWidget::dropEvent(event);
}
Run Code Online (Sandbox Code Playgroud)
如何确定该项目是否将插入到其所放置的项目的上方、内部或下方?
没有真正的问题,我只是有一个外观问题。好吧,首先我使用 Qt Designer 创建一个表单。在此表格上我放置了一个QTreeWidget
. 我们仍然在 Qt Designer 中。在 中QTreeWidget
,我创建了一些条目(父母),然后我还添加了一些子条目。完成后,我保存 ui 文件,然后加载该文件 -loadUi()
动态使用。在本例中我使用 PyQt4。到目前为止没有问题。
当我加载放置的表单时,QTreeWidget
我希望程序展开所有子条目。默认情况下,当我运行该程序时,我只看到父条目。当我想查看子条目时,我必须单击父条目,但我不希望这样做。
有办法解决这个问题吗?
我对 Pyqt5 非常陌生,正在尝试构建一个 GUI。我做了一个QtreeWidget
下Qdockwidget
。
当我尝试使用 进行设置时QFileSystemModel
,Qtreewidget
python 出现错误:
类型错误:QTreeWidget.setModel() 是私有方法
下面是我的 .py 文件:
import os
import sys
from PyQt5 import QtCore, QtGui, QtWidgets
#from PyQt5.QtWidgets import QApplication, QFileSystemModel, QTreeView, QWidget, QVBoxLayout,QPushButton, QMessageBox,QDialog,QTableWidget,QTabWidget
class Ui_MainWindow(object):
def setupUi(self, MainWindow):
MainWindow.setObjectName("MainWindow")
MainWindow.resize(722, 366)
self.centralwidget = QtWidgets.QWidget(MainWindow)
self.centralwidget.setObjectName("centralwidget")
self.gridLayout = QtWidgets.QGridLayout(self.centralwidget)
self.gridLayout.setObjectName("gridLayout")
self.frame = QtWidgets.QFrame(self.centralwidget)
self.frame.setFrameShape(QtWidgets.QFrame.StyledPanel)
self.frame.setFrameShadow(QtWidgets.QFrame.Raised)
self.frame.setObjectName("frame")
self.gridLayout_5 = QtWidgets.QGridLayout(self.frame)
self.gridLayout_5.setObjectName("gridLayout_5")
self.tabWidget = QtWidgets.QTabWidget(self.frame)
self.tabWidget.setStyleSheet("")
self.tabWidget.setObjectName("tabWidget")
self.XSDTree = QtWidgets.QWidget()
self.XSDTree.setEnabled(True)
font = QtGui.QFont()
font.setBold(True)
font.setWeight(75)
self.XSDTree.setFont(font) …
Run Code Online (Sandbox Code Playgroud) qtreewidget ×10
qt ×6
c++ ×4
qt4 ×4
python ×3
qtreeview ×2
c++11 ×1
checkbox ×1
pyqt ×1
pyqt4 ×1
pyqt5 ×1
qt5 ×1
qtableview ×1
qtablewidget ×1