feat(vqt6): 新增 QTreeWidget/QTreeWidgetItem 桥接与树统计助手
This commit is contained in:
1 parent
90a58d05b1
commit
2e72ef0359
5 files changed
+410
No files matched your search
@@ -85,6 +85,56 @@ def _w_text_of(qstr: QtStringPtr) -> str:
|
||||
return s
|
||||
|
||||
|
||||
# ============================================================
|
||||
# 树状控件统计助手(返回 int,规避跨模块 FFI 返回指针)
|
||||
# 叶子勾选态: 0=未选 1=半选 2=选中
|
||||
# ============================================================
|
||||
def qtree_checked_count(tw: QtTreeWidgetPtr) -> int:
|
||||
"""统计被勾选的叶子节点数"""
|
||||
n: int = 0
|
||||
gi: int = 0
|
||||
top_n: int = vqt6_qtreewidget_top_level_item_count(tw)
|
||||
while gi < top_n:
|
||||
g: QtTreeWidgetItemPtr = vqt6_qtreewidget_top_level_item(tw, gi)
|
||||
ci: int = 0
|
||||
cn: int = vqt6_qtreewidgetitem_child_count(g)
|
||||
while ci < cn:
|
||||
it: QtTreeWidgetItemPtr = vqt6_qtreewidgetitem_child(g, ci)
|
||||
if vqt6_qtreewidgetitem_check_state(it) == 2:
|
||||
n += 1
|
||||
ci += 1
|
||||
gi += 1
|
||||
return n
|
||||
|
||||
|
||||
def qtree_checked_size(tw: QtTreeWidgetPtr) -> int:
|
||||
"""统计被勾选叶子节点的磁盘占用合计(MB)"""
|
||||
mb: int = 0
|
||||
gi: int = 0
|
||||
top_n: int = vqt6_qtreewidget_top_level_item_count(tw)
|
||||
while gi < top_n:
|
||||
g: QtTreeWidgetItemPtr = vqt6_qtreewidget_top_level_item(tw, gi)
|
||||
ci: int = 0
|
||||
cn: int = vqt6_qtreewidgetitem_child_count(g)
|
||||
while ci < cn:
|
||||
it: QtTreeWidgetItemPtr = vqt6_qtreewidgetitem_child(g, ci)
|
||||
if vqt6_qtreewidgetitem_check_state(it) == 2:
|
||||
mb += vqt6_qtreewidgetitem_data_int(it)
|
||||
ci += 1
|
||||
gi += 1
|
||||
return mb
|
||||
|
||||
|
||||
def qtree_click_toggle(tw: QtTreeWidgetPtr):
|
||||
"""点击带子节点的当前行 → 展开/折叠"""
|
||||
cur: QtTreeWidgetItemPtr = vqt6_qtreewidget_current_item(tw)
|
||||
if cur is None:
|
||||
return
|
||||
if vqt6_qtreewidgetitem_child_count(cur) > 0:
|
||||
ex: int = vqt6_qtreewidgetitem_is_expanded(cur)
|
||||
vqt6_qtreewidgetitem_set_expanded(cur, 1 - ex)
|
||||
|
||||
|
||||
@t.NoVTable
|
||||
class QApplication:
|
||||
"""QApplication 包装(不透明指针)"""
|
||||
@@ -1016,6 +1066,132 @@ class QListWidget:
|
||||
_w_set_enabled(self._ptr, enabled)
|
||||
|
||||
|
||||
@t.NoVTable
|
||||
class QTreeWidgetItem:
|
||||
"""QTreeWidgetItem 包装(树节点,勾选态 0=未选 2=选中)"""
|
||||
_ptr: QtTreeWidgetItemPtr
|
||||
|
||||
def __init__(self, text: str = ""):
|
||||
qs: QtStringPtr = vqt6_qstring_create(text)
|
||||
self._ptr = vqt6_qtreewidgetitem_create(qs)
|
||||
vqt6_qstring_free(qs)
|
||||
if self._ptr is None:
|
||||
raise RuntimeError("Failed to create QTreeWidgetItem")
|
||||
|
||||
def setText(self, text: str):
|
||||
qs: QtStringPtr = vqt6_qstring_create(text)
|
||||
vqt6_qtreewidgetitem_set_text(self._ptr, qs)
|
||||
vqt6_qstring_free(qs)
|
||||
|
||||
def text(self) -> str:
|
||||
return _w_text_of(vqt6_qtreewidgetitem_text(self._ptr))
|
||||
|
||||
def addChild(self, child: "QTreeWidgetItem"):
|
||||
vqt6_qtreewidgetitem_add_child(self._ptr, child._ptr)
|
||||
|
||||
def childCount(self) -> int:
|
||||
return vqt6_qtreewidgetitem_child_count(self._ptr)
|
||||
|
||||
def child(self, index: int) -> "QTreeWidgetItem":
|
||||
it = QTreeWidgetItem()
|
||||
it._ptr = vqt6_qtreewidgetitem_child(self._ptr, index)
|
||||
return it
|
||||
|
||||
def setCheckable(self, checkable: int):
|
||||
vqt6_qtreewidgetitem_set_checkable(self._ptr, checkable)
|
||||
|
||||
def setChecked(self, checked: int):
|
||||
if checked != 0:
|
||||
vqt6_qtreewidgetitem_set_check_state(self._ptr, 2)
|
||||
else:
|
||||
vqt6_qtreewidgetitem_set_check_state(self._ptr, 0)
|
||||
|
||||
def isChecked(self) -> int:
|
||||
return vqt6_qtreewidgetitem_check_state(self._ptr)
|
||||
|
||||
def setSize(self, mb: int):
|
||||
"""把磁盘占用(MB)存到节点 UserRole(统计用)"""
|
||||
vqt6_qtreewidgetitem_set_data_int(self._ptr, mb)
|
||||
|
||||
def setExpanded(self, expanded: int):
|
||||
vqt6_qtreewidgetitem_set_expanded(self._ptr, expanded)
|
||||
|
||||
def isExpanded(self) -> int:
|
||||
return vqt6_qtreewidgetitem_is_expanded(self._ptr)
|
||||
|
||||
|
||||
@t.NoVTable
|
||||
class QTreeWidget:
|
||||
"""QTreeWidget 包装"""
|
||||
_ptr: QtTreeWidgetPtr
|
||||
|
||||
def __init__(self, parent: "QWidget | None" = None):
|
||||
if parent is not None and parent._ptr is not None:
|
||||
self._ptr = vqt6_qtreewidget_create_with_parent(parent._ptr)
|
||||
else:
|
||||
self._ptr = vqt6_qtreewidget_create()
|
||||
if self._ptr is None:
|
||||
raise RuntimeError("Failed to create QTreeWidget")
|
||||
|
||||
def addTopLevelItem(self, item: "QTreeWidgetItem"):
|
||||
vqt6_qtreewidget_add_top_level_item(self._ptr, item._ptr)
|
||||
|
||||
def insertTopLevelItem(self, index: int, item: "QTreeWidgetItem"):
|
||||
vqt6_qtreewidget_insert_top_level_item(self._ptr, index, item._ptr)
|
||||
|
||||
def topLevelItemCount(self) -> int:
|
||||
return vqt6_qtreewidget_top_level_item_count(self._ptr)
|
||||
|
||||
def topLevelItem(self, index: int) -> "QTreeWidgetItem":
|
||||
it = QTreeWidgetItem()
|
||||
it._ptr = vqt6_qtreewidget_top_level_item(self._ptr, index)
|
||||
return it
|
||||
|
||||
def currentItem(self) -> "QTreeWidgetItem":
|
||||
it = QTreeWidgetItem()
|
||||
it._ptr = vqt6_qtreewidget_current_item(self._ptr)
|
||||
return it
|
||||
|
||||
def expandAll(self):
|
||||
vqt6_qtreewidget_expand_all(self._ptr)
|
||||
|
||||
def collapseAll(self):
|
||||
vqt6_qtreewidget_collapse_all(self._ptr)
|
||||
|
||||
def setHeaderHidden(self, hidden: int):
|
||||
vqt6_qtreewidget_set_header_hidden(self._ptr, hidden)
|
||||
|
||||
def setColumnCount(self, count: int):
|
||||
vqt6_qtreewidget_set_column_count(self._ptr, count)
|
||||
|
||||
def setItemExpanded(self, item: "QTreeWidgetItem", expanded: int):
|
||||
vqt6_qtreewidget_set_item_expanded(self._ptr, item._ptr, expanded)
|
||||
|
||||
def itemChanged(self, cb: bytes, data: bytes = 0):
|
||||
vqt6_qtreewidget_connect_item_changed(self._ptr, cb, data)
|
||||
|
||||
def itemClicked(self, cb: bytes, data: bytes = 0):
|
||||
vqt6_qtreewidget_connect_item_clicked(self._ptr, cb, data)
|
||||
|
||||
def show(self):
|
||||
_w_show(self._ptr)
|
||||
|
||||
def hide(self):
|
||||
_w_hide(self._ptr)
|
||||
|
||||
def setGeometry(self, x: int, y: int, w: int, h: int):
|
||||
_w_set_geometry(self._ptr, x, y, w, h)
|
||||
|
||||
def resize(self, w: int, h: int):
|
||||
_w_resize(self._ptr, w, h)
|
||||
|
||||
def move(self, x: int, y: int):
|
||||
_w_move(self._ptr, x, y)
|
||||
|
||||
def setEnabled(self, enabled: int):
|
||||
_w_set_enabled(self._ptr, enabled)
|
||||
|
||||
|
||||
@t.NoVTable
|
||||
class QTabWidget:
|
||||
"""QTabWidget 包装"""
|
||||
@@ -1603,6 +1779,7 @@ __all__ = [
|
||||
"QLineEdit", "QCheckBox", "QRadioButton",
|
||||
"QComboBox", "QSlider", "QSpinBox", "QProgressBar",
|
||||
"QTextEdit", "QPlainTextEdit", "QListWidget",
|
||||
"QTreeWidget", "QTreeWidgetItem",
|
||||
"QTabWidget", "QStackedWidget",
|
||||
"QHBoxLayout", "QVBoxLayout", "QGridLayout",
|
||||
"QMessageBox", "QFileDialog", "QTimer",
|
||||
@@ -1611,6 +1788,7 @@ __all__ = [
|
||||
# 类型
|
||||
"QtObjectPtr", "QtStringPtr", "QtByteArrayPtr", "QtWidgetPtr", "QtAppPtr",
|
||||
"QtLabelPtr", "QtPushButtonPtr",
|
||||
"QtTreeWidgetPtr", "QtTreeWidgetItemPtr",
|
||||
"QtColorPtr", "QtFontPtr", "QtPixmapPtr", "QtImagePtr", "QtPainterPtr",
|
||||
"QtTcpSocketPtr", "QtHostAddressPtr", "QtNetworkRequestPtr", "QtNetworkReplyPtr",
|
||||
# 常量
|
||||
|
||||
@@ -28,6 +28,7 @@
|
||||
#include <QFormLayout>
|
||||
#include <QStackedWidget>
|
||||
#include <QTabWidget>
|
||||
#include <QTreeWidget>
|
||||
#include <QMenuBar>
|
||||
#include <QMenu>
|
||||
#include <QAction>
|
||||
@@ -42,6 +43,7 @@
|
||||
#include <QStringList>
|
||||
#include <QFont>
|
||||
#include <QColor>
|
||||
#include <QVariant>
|
||||
#include <QPixmap>
|
||||
#include <QIcon>
|
||||
#include <QCursor>
|
||||
@@ -768,6 +770,11 @@ extern "C" VQT6_API void vqt6_qplaintextedit_append_utf8(void* pte, const char*
|
||||
static_cast<QPlainTextEdit*>(pte)->appendPlainText(QString::fromUtf8(utf8));
|
||||
}
|
||||
|
||||
extern "C" VQT6_API void vqt6_qplaintextedit_set_plain_text_utf8(void* pte, const char* utf8) {
|
||||
if (pte == nullptr || utf8 == nullptr) return;
|
||||
static_cast<QPlainTextEdit*>(pte)->setPlainText(QString::fromUtf8(utf8));
|
||||
}
|
||||
|
||||
extern "C" VQT6_API void vqt6_qwidget_set_stylesheet_utf8(void* widget, const char* utf8) {
|
||||
if (widget == nullptr || utf8 == nullptr) return;
|
||||
static_cast<QWidget*>(widget)->setStyleSheet(QString::fromUtf8(utf8));
|
||||
@@ -1766,6 +1773,144 @@ extern "C" VQT6_API void* vqt6_qfiledialog_get_open_file_names(void* parent, voi
|
||||
));
|
||||
}
|
||||
|
||||
// ============================================================
|
||||
// QTreeWidget / QTreeWidgetItem
|
||||
// ============================================================
|
||||
extern "C" VQT6_API void* vqt6_qtreewidget_create(void) {
|
||||
return new QTreeWidget();
|
||||
}
|
||||
|
||||
extern "C" VQT6_API void* vqt6_qtreewidget_create_with_parent(void* parent) {
|
||||
if (parent == nullptr) return nullptr;
|
||||
return new QTreeWidget(static_cast<QWidget*>(parent));
|
||||
}
|
||||
|
||||
extern "C" VQT6_API void vqt6_qtreewidget_add_top_level_item(void* tw, void* item) {
|
||||
if (tw == nullptr || item == nullptr) return;
|
||||
static_cast<QTreeWidget*>(tw)->addTopLevelItem(static_cast<QTreeWidgetItem*>(item));
|
||||
}
|
||||
|
||||
extern "C" VQT6_API void vqt6_qtreewidget_insert_top_level_item(void* tw, int index, void* item) {
|
||||
if (tw == nullptr || item == nullptr) return;
|
||||
static_cast<QTreeWidget*>(tw)->insertTopLevelItem(index, static_cast<QTreeWidgetItem*>(item));
|
||||
}
|
||||
|
||||
extern "C" VQT6_API int vqt6_qtreewidget_top_level_item_count(void* tw) {
|
||||
if (tw == nullptr) return 0;
|
||||
return static_cast<QTreeWidget*>(tw)->topLevelItemCount();
|
||||
}
|
||||
|
||||
extern "C" VQT6_API void* vqt6_qtreewidget_top_level_item(void* tw, int index) {
|
||||
if (tw == nullptr) return nullptr;
|
||||
return static_cast<QTreeWidget*>(tw)->topLevelItem(index);
|
||||
}
|
||||
|
||||
extern "C" VQT6_API void* vqt6_qtreewidget_current_item(void* tw) {
|
||||
if (tw == nullptr) return nullptr;
|
||||
return static_cast<QTreeWidget*>(tw)->currentItem();
|
||||
}
|
||||
|
||||
extern "C" VQT6_API void vqt6_qtreewidget_expand_all(void* tw) {
|
||||
if (tw == nullptr) return;
|
||||
static_cast<QTreeWidget*>(tw)->expandAll();
|
||||
}
|
||||
|
||||
extern "C" VQT6_API void vqt6_qtreewidget_collapse_all(void* tw) {
|
||||
if (tw == nullptr) return;
|
||||
static_cast<QTreeWidget*>(tw)->collapseAll();
|
||||
}
|
||||
|
||||
extern "C" VQT6_API void vqt6_qtreewidget_set_header_hidden(void* tw, int hidden) {
|
||||
if (tw == nullptr) return;
|
||||
static_cast<QTreeWidget*>(tw)->setHeaderHidden(hidden != 0);
|
||||
}
|
||||
|
||||
extern "C" VQT6_API void vqt6_qtreewidget_set_column_count(void* tw, int count) {
|
||||
if (tw == nullptr) return;
|
||||
static_cast<QTreeWidget*>(tw)->setColumnCount(count);
|
||||
}
|
||||
|
||||
extern "C" VQT6_API void vqt6_qtreewidget_set_item_expanded(void* tw, void* item, int expanded) {
|
||||
if (item == nullptr) return;
|
||||
(void)tw;
|
||||
static_cast<QTreeWidgetItem*>(item)->setExpanded(expanded != 0);
|
||||
}
|
||||
|
||||
extern "C" VQT6_API void* vqt6_qtreewidgetitem_create(void* text) {
|
||||
QTreeWidgetItem* it = new QTreeWidgetItem();
|
||||
if (text != nullptr) it->setText(0, *static_cast<QString*>(text));
|
||||
return it;
|
||||
}
|
||||
|
||||
extern "C" VQT6_API void vqt6_qtreewidgetitem_add_child(void* item, void* child) {
|
||||
if (item == nullptr || child == nullptr) return;
|
||||
static_cast<QTreeWidgetItem*>(item)->addChild(static_cast<QTreeWidgetItem*>(child));
|
||||
}
|
||||
|
||||
extern "C" VQT6_API int vqt6_qtreewidgetitem_child_count(void* item) {
|
||||
if (item == nullptr) return 0;
|
||||
return static_cast<QTreeWidgetItem*>(item)->childCount();
|
||||
}
|
||||
|
||||
extern "C" VQT6_API void* vqt6_qtreewidgetitem_child(void* item, int index) {
|
||||
if (item == nullptr) return nullptr;
|
||||
return static_cast<QTreeWidgetItem*>(item)->child(index);
|
||||
}
|
||||
|
||||
extern "C" VQT6_API void vqt6_qtreewidgetitem_set_text(void* item, void* text) {
|
||||
if (item == nullptr || text == nullptr) return;
|
||||
static_cast<QTreeWidgetItem*>(item)->setText(0, *static_cast<QString*>(text));
|
||||
}
|
||||
|
||||
extern "C" VQT6_API void* vqt6_qtreewidgetitem_text(void* item) {
|
||||
if (item == nullptr) return nullptr;
|
||||
return new QString(static_cast<QTreeWidgetItem*>(item)->text(0));
|
||||
}
|
||||
|
||||
extern "C" VQT6_API void vqt6_qtreewidgetitem_set_checkable(void* item, int checkable) {
|
||||
if (item == nullptr) return;
|
||||
QTreeWidgetItem* it = static_cast<QTreeWidgetItem*>(item);
|
||||
Qt::ItemFlags f = it->flags();
|
||||
if (checkable != 0) f |= Qt::ItemIsUserCheckable;
|
||||
else f &= ~Qt::ItemIsUserCheckable;
|
||||
it->setFlags(f);
|
||||
}
|
||||
|
||||
extern "C" VQT6_API void vqt6_qtreewidgetitem_set_check_state(void* item, int state) {
|
||||
if (item == nullptr) return;
|
||||
Qt::CheckState cs = Qt::Unchecked;
|
||||
if (state == 1) cs = Qt::PartiallyChecked;
|
||||
else if (state == 2) cs = Qt::Checked;
|
||||
static_cast<QTreeWidgetItem*>(item)->setCheckState(0, cs);
|
||||
}
|
||||
|
||||
extern "C" VQT6_API int vqt6_qtreewidgetitem_check_state(void* item) {
|
||||
if (item == nullptr) return 0;
|
||||
return static_cast<int>(static_cast<QTreeWidgetItem*>(item)->checkState(0));
|
||||
}
|
||||
|
||||
extern "C" VQT6_API void vqt6_qtreewidgetitem_set_expanded(void* item, int expanded) {
|
||||
if (item == nullptr) return;
|
||||
static_cast<QTreeWidgetItem*>(item)->setExpanded(expanded != 0);
|
||||
}
|
||||
|
||||
extern "C" VQT6_API int vqt6_qtreewidgetitem_is_expanded(void* item) {
|
||||
if (item == nullptr) return 0;
|
||||
return static_cast<QTreeWidgetItem*>(item)->isExpanded() ? 1 : 0;
|
||||
}
|
||||
|
||||
extern "C" VQT6_API void vqt6_qtreewidgetitem_set_data_int(void* item, int value) {
|
||||
if (item == nullptr) return;
|
||||
static_cast<QTreeWidgetItem*>(item)->setData(0, Qt::UserRole, QVariant(value));
|
||||
}
|
||||
|
||||
extern "C" VQT6_API int vqt6_qtreewidgetitem_data_int(void* item) {
|
||||
if (item == nullptr) return 0;
|
||||
bool ok = false;
|
||||
int v = static_cast<QTreeWidgetItem*>(item)->data(0, Qt::UserRole).toInt(&ok);
|
||||
return ok ? v : 0;
|
||||
}
|
||||
|
||||
// ============================================================
|
||||
// 信号连接(Qt 信号 → Viper 回调 vqt6_slot_callback_t)
|
||||
// 模式:vqt6_signal_register 分配 slot_id → Qt lambda 连接信号 →
|
||||
@@ -1900,3 +2045,23 @@ extern "C" VQT6_API void vqt6_qaction_connect_triggered(void* action, vqt6_slot_
|
||||
vqt6_trigger_slot(slot_id);
|
||||
});
|
||||
}
|
||||
|
||||
extern "C" VQT6_API void vqt6_qtreewidget_connect_item_changed(void* tw, vqt6_slot_callback_t cb, void* user_data) {
|
||||
if (tw == nullptr) return;
|
||||
int slot_id = vqt6_signal_register(cb, user_data);
|
||||
if (slot_id < 0) return;
|
||||
QObject::connect(static_cast<QTreeWidget*>(tw), &QTreeWidget::itemChanged,
|
||||
static_cast<QTreeWidget*>(tw), [slot_id](QTreeWidgetItem*, int) {
|
||||
vqt6_trigger_slot(slot_id);
|
||||
});
|
||||
}
|
||||
|
||||
extern "C" VQT6_API void vqt6_qtreewidget_connect_item_clicked(void* tw, vqt6_slot_callback_t cb, void* user_data) {
|
||||
if (tw == nullptr) return;
|
||||
int slot_id = vqt6_signal_register(cb, user_data);
|
||||
if (slot_id < 0) return;
|
||||
QObject::connect(static_cast<QTreeWidget*>(tw), &QTreeWidget::itemClicked,
|
||||
static_cast<QTreeWidget*>(tw), [slot_id](QTreeWidgetItem*, int) {
|
||||
vqt6_trigger_slot(slot_id);
|
||||
});
|
||||
}
|
||||
@@ -52,6 +52,7 @@ VQT6_API void* vqt6_qwidget_text(void* widget);
|
||||
// UTF-8 便捷版:直接传 C 字符串(Viper str),内部转 QString,避免 Viper 端手动创建/释放 QString
|
||||
VQT6_API void vqt6_qlabel_set_text_utf8(void* label, const char* utf8);
|
||||
VQT6_API void vqt6_qplaintextedit_append_utf8(void* pte, const char* utf8);
|
||||
VQT6_API void vqt6_qplaintextedit_set_plain_text_utf8(void* pte, const char* utf8);
|
||||
// Qt 样式表(QSS):直接传 C 字符串,深色主题等外观定制
|
||||
VQT6_API void vqt6_qwidget_set_stylesheet_utf8(void* widget, const char* utf8);
|
||||
VQT6_API void vqt6_qwidget_set_enabled(void* widget, int enabled);
|
||||
@@ -244,6 +245,36 @@ VQT6_API void* vqt6_qlistwidget_current_item_text(void* lw);
|
||||
VQT6_API void* vqt6_qlistwidget_item_text(void* lw, int row);
|
||||
VQT6_API void vqt6_qlistwidget_set_item_text(void* lw, int row, void* text);
|
||||
|
||||
// ============================================================
|
||||
// QTreeWidget / QTreeWidgetItem
|
||||
// ============================================================
|
||||
VQT6_API void* vqt6_qtreewidget_create(void);
|
||||
VQT6_API void* vqt6_qtreewidget_create_with_parent(void* parent);
|
||||
VQT6_API void vqt6_qtreewidget_add_top_level_item(void* tw, void* item);
|
||||
VQT6_API void vqt6_qtreewidget_insert_top_level_item(void* tw, int index, void* item);
|
||||
VQT6_API int vqt6_qtreewidget_top_level_item_count(void* tw);
|
||||
VQT6_API void* vqt6_qtreewidget_top_level_item(void* tw, int index);
|
||||
VQT6_API void* vqt6_qtreewidget_current_item(void* tw);
|
||||
VQT6_API void vqt6_qtreewidget_expand_all(void* tw);
|
||||
VQT6_API void vqt6_qtreewidget_collapse_all(void* tw);
|
||||
VQT6_API void vqt6_qtreewidget_set_header_hidden(void* tw, int hidden);
|
||||
VQT6_API void vqt6_qtreewidget_set_column_count(void* tw, int count);
|
||||
VQT6_API void vqt6_qtreewidget_set_item_expanded(void* tw, void* item, int expanded);
|
||||
|
||||
VQT6_API void* vqt6_qtreewidgetitem_create(void* text);
|
||||
VQT6_API void vqt6_qtreewidgetitem_add_child(void* item, void* child);
|
||||
VQT6_API int vqt6_qtreewidgetitem_child_count(void* item);
|
||||
VQT6_API void* vqt6_qtreewidgetitem_child(void* item, int index);
|
||||
VQT6_API void vqt6_qtreewidgetitem_set_text(void* item, void* text);
|
||||
VQT6_API void* vqt6_qtreewidgetitem_text(void* item);
|
||||
VQT6_API void vqt6_qtreewidgetitem_set_checkable(void* item, int checkable);
|
||||
VQT6_API void vqt6_qtreewidgetitem_set_check_state(void* item, int state);
|
||||
VQT6_API int vqt6_qtreewidgetitem_check_state(void* item);
|
||||
VQT6_API void vqt6_qtreewidgetitem_set_expanded(void* item, int expanded);
|
||||
VQT6_API int vqt6_qtreewidgetitem_is_expanded(void* item);
|
||||
VQT6_API void vqt6_qtreewidgetitem_set_data_int(void* item, int value);
|
||||
VQT6_API int vqt6_qtreewidgetitem_data_int(void* item);
|
||||
|
||||
// ============================================================
|
||||
// QProgressBar
|
||||
// ============================================================
|
||||
|
||||
@@ -209,6 +209,7 @@ def vqt6_qplaintextedit_set_plain_text(pte: QtPlainTextEditPtr, text: QtStringPt
|
||||
def vqt6_qplaintextedit_append(pte: QtPlainTextEditPtr, text: QtStringPtr) -> t.State: pass
|
||||
# UTF-8 便捷版:直接传 Viper str,避免手动创建/释放 QString
|
||||
def vqt6_qplaintextedit_append_utf8(pte: QtPlainTextEditPtr, text: t.CChar | t.CPtr) -> t.State: pass
|
||||
def vqt6_qplaintextedit_set_plain_text_utf8(pte: QtPlainTextEditPtr, text: t.CChar | t.CPtr) -> t.State: pass
|
||||
def vqt6_qplaintextedit_clear(pte: QtPlainTextEditPtr) -> t.State: pass
|
||||
def vqt6_qplaintextedit_set_read_only(pte: QtPlainTextEditPtr, ro: t.CInt) -> t.State: pass
|
||||
def vqt6_qplaintextedit_line_count(pte: QtPlainTextEditPtr) -> t.CInt | t.State: pass
|
||||
@@ -274,6 +275,37 @@ def vqt6_qlistwidget_item_text(lw: QtListWidgetPtr, row: t.CInt) -> QtStringPtr
|
||||
def vqt6_qlistwidget_set_item_text(lw: QtListWidgetPtr, row: t.CInt, text: QtStringPtr) -> t.State: pass
|
||||
|
||||
|
||||
# ============================================================
|
||||
# QTreeWidget / QTreeWidgetItem — 树状控件
|
||||
# ============================================================
|
||||
def vqt6_qtreewidget_create() -> QtTreeWidgetPtr | t.State: pass
|
||||
def vqt6_qtreewidget_create_with_parent(parent: QtWidgetPtr) -> QtTreeWidgetPtr | t.State: pass
|
||||
def vqt6_qtreewidget_add_top_level_item(tw: QtTreeWidgetPtr, item: QtTreeWidgetItemPtr) -> t.State: pass
|
||||
def vqt6_qtreewidget_insert_top_level_item(tw: QtTreeWidgetPtr, index: t.CInt, item: QtTreeWidgetItemPtr) -> t.State: pass
|
||||
def vqt6_qtreewidget_top_level_item_count(tw: QtTreeWidgetPtr) -> t.CInt | t.State: pass
|
||||
def vqt6_qtreewidget_top_level_item(tw: QtTreeWidgetPtr, index: t.CInt) -> QtTreeWidgetItemPtr | t.State: pass
|
||||
def vqt6_qtreewidget_current_item(tw: QtTreeWidgetPtr) -> QtTreeWidgetItemPtr | t.State: pass
|
||||
def vqt6_qtreewidget_expand_all(tw: QtTreeWidgetPtr) -> t.State: pass
|
||||
def vqt6_qtreewidget_collapse_all(tw: QtTreeWidgetPtr) -> t.State: pass
|
||||
def vqt6_qtreewidget_set_header_hidden(tw: QtTreeWidgetPtr, hidden: t.CInt) -> t.State: pass
|
||||
def vqt6_qtreewidget_set_column_count(tw: QtTreeWidgetPtr, count: t.CInt) -> t.State: pass
|
||||
def vqt6_qtreewidget_set_item_expanded(tw: QtTreeWidgetPtr, item: QtTreeWidgetItemPtr, expanded: t.CInt) -> t.State: pass
|
||||
|
||||
def vqt6_qtreewidgetitem_create(text: QtStringPtr) -> QtTreeWidgetItemPtr | t.State: pass
|
||||
def vqt6_qtreewidgetitem_add_child(item: QtTreeWidgetItemPtr, child: QtTreeWidgetItemPtr) -> t.State: pass
|
||||
def vqt6_qtreewidgetitem_child_count(item: QtTreeWidgetItemPtr) -> t.CInt | t.State: pass
|
||||
def vqt6_qtreewidgetitem_child(item: QtTreeWidgetItemPtr, index: t.CInt) -> QtTreeWidgetItemPtr | t.State: pass
|
||||
def vqt6_qtreewidgetitem_set_text(item: QtTreeWidgetItemPtr, text: QtStringPtr) -> t.State: pass
|
||||
def vqt6_qtreewidgetitem_text(item: QtTreeWidgetItemPtr) -> QtStringPtr | t.State: pass
|
||||
def vqt6_qtreewidgetitem_set_checkable(item: QtTreeWidgetItemPtr, checkable: t.CInt) -> t.State: pass
|
||||
def vqt6_qtreewidgetitem_set_check_state(item: QtTreeWidgetItemPtr, state: t.CInt) -> t.State: pass
|
||||
def vqt6_qtreewidgetitem_check_state(item: QtTreeWidgetItemPtr) -> t.CInt | t.State: pass
|
||||
def vqt6_qtreewidgetitem_set_expanded(item: QtTreeWidgetItemPtr, expanded: t.CInt) -> t.State: pass
|
||||
def vqt6_qtreewidgetitem_is_expanded(item: QtTreeWidgetItemPtr) -> t.CInt | t.State: pass
|
||||
def vqt6_qtreewidgetitem_set_data_int(item: QtTreeWidgetItemPtr, value: t.CInt) -> t.State: pass
|
||||
def vqt6_qtreewidgetitem_data_int(item: QtTreeWidgetItemPtr) -> t.CInt | t.State: pass
|
||||
|
||||
|
||||
# ============================================================
|
||||
# QProgressBar — 进度条
|
||||
# ============================================================
|
||||
@@ -501,3 +533,5 @@ def vqt6_qprogressbar_connect_value_changed(pb: QtProgressBarPtr, cb: bytes, use
|
||||
def vqt6_qlistwidget_connect_current_row_changed(lw: QtListWidgetPtr, cb: bytes, user_data: bytes) -> t.State: pass
|
||||
def vqt6_qtabwidget_connect_current_changed(tw: QtTabWidgetPtr, cb: bytes, user_data: bytes) -> t.State: pass
|
||||
def vqt6_qaction_connect_triggered(action: QtActionPtr, cb: bytes, user_data: bytes) -> t.State: pass
|
||||
def vqt6_qtreewidget_connect_item_changed(tw: QtTreeWidgetPtr, cb: bytes, user_data: bytes) -> t.State: pass
|
||||
def vqt6_qtreewidget_connect_item_clicked(tw: QtTreeWidgetPtr, cb: bytes, user_data: bytes) -> t.State: pass
|
||||
@@ -58,6 +58,8 @@ QtRadioButtonPtr: t.CTypedef = t.CVoid | t.CPtr # QRadioButton*
|
||||
QtComboBoxPtr: t.CTypedef = t.CVoid | t.CPtr # QComboBox*
|
||||
QtListWidgetPtr: t.CTypedef = t.CVoid | t.CPtr # QListWidget*
|
||||
QtListWidgetItemPtr: t.CTypedef = t.CVoid | t.CPtr # QListWidgetItem*
|
||||
QtTreeWidgetPtr: t.CTypedef = t.CVoid | t.CPtr # QTreeWidget*
|
||||
QtTreeWidgetItemPtr: t.CTypedef = t.CVoid | t.CPtr # QTreeWidgetItem*
|
||||
QtProgressBarPtr: t.CTypedef = t.CVoid | t.CPtr # QProgressBar*
|
||||
QtSliderPtr: t.CTypedef = t.CVoid | t.CPtr # QSlider*
|
||||
QtSpinBoxPtr: t.CTypedef = t.CVoid | t.CPtr # QSpinBox*
|
||||
|
||||
Reference in new issue
Block a user