qtc++主界面a中的隐藏treewidget被子界面的子界面c上的按钮控制其显示具体代码
时间: 2024-04-30 10:18:22 浏览: 104
c++按钮代码
5星 · 资源好评率100%
假设你有一个主界面 `MainWindow`,其中包含一个 `QTreeWidget` 控件 `treeWidget`,还有一个子界面 `SubWidgetC`,其中包含一个按钮 `showTreeButton`,当点击这个按钮时,控制主界面的 `treeWidget` 显示或隐藏。
首先,在 `MainWindow` 的构造函数中,将 `treeWidget` 设置为隐藏状态:
```cpp
MainWindow::MainWindow(QWidget *parent)
: QMainWindow(parent)
{
ui.setupUi(this);
ui.treeWidget->hide();
}
```
然后,在 `SubWidgetC` 的头文件中声明一个指向父窗口的指针:
```cpp
class SubWidgetC : public QWidget
{
Q_OBJECT
public:
explicit SubWidgetC(QWidget *parent = nullptr);
~SubWidgetC();
private:
Ui::SubWidgetC ui;
QWidget *m_parent; // 父窗口指针
private slots:
void on_showTreeButton_clicked();
};
```
在 `SubWidgetC` 的构造函数中,将父窗口指针初始化为传入的 `parent`:
```cpp
SubWidgetC::SubWidgetC(QWidget *parent)
: QWidget(parent)
, m_parent(parent)
{
ui.setupUi(this);
}
```
最后,在 `SubWidgetC` 的槽函数 `on_showTreeButton_clicked()` 中,根据 `treeWidget` 的当前显示状态,调用 `show()` 或 `hide()` 函数来控制它的显示或隐藏:
```cpp
void SubWidgetC::on_showTreeButton_clicked()
{
if (m_parent->findChild<QTreeWidget*>("treeWidget")->isVisible()) {
m_parent->findChild<QTreeWidget*>("treeWidget")->hide();
} else {
m_parent->findChild<QTreeWidget*>("treeWidget")->show();
}
}
```
这里使用 `findChild<QTreeWidget*>("treeWidget")` 来查找主窗口中的 `treeWidget` 控件,并进行显示或隐藏操作。注意,`"treeWidget"` 参数需要与 `ui` 文件中 `treeWidget` 控件的 objectName 属性保持一致。
阅读全文