C++Qt不用QT设计师实现,点击主窗口的Toolbutton,弹出子窗口,在子窗口中设置一个中心窗口
时间: 2023-06-19 12:09:34 浏览: 134
qt--主窗口中按钮弹出子窗口,并把主窗口信号发送给子窗口
5星 · 资源好评率100%
可以通过以下步骤实现:
1. 创建一个主窗口类,并在其中添加一个 Toolbutton。
2. 在主窗口类中实现 Toolbutton 的点击事件,可以通过连接槽函数的方式实现。
3. 在槽函数中创建一个子窗口类的对象,并调用 show() 函数显示子窗口。
4. 在子窗口类中添加一个中心窗口,可以使用 QWidget 或其他控件作为中心窗口,并将其添加到子窗口的布局中。
以下是示例代码:
```cpp
// 主窗口类
class MainWindow : public QMainWindow
{
Q_OBJECT
public:
MainWindow(QWidget *parent = nullptr);
~MainWindow();
private:
QToolBar *m_toolbar;
private slots:
void onToolButtonClicked();
};
MainWindow::MainWindow(QWidget *parent)
: QMainWindow(parent)
{
// 创建 Toolbutton
m_toolbar = addToolBar("ToolBar");
QAction *action = m_toolbar->addAction("Open");
connect(action, &QAction::triggered, this, &MainWindow::onToolButtonClicked);
}
MainWindow::~MainWindow()
{
}
void MainWindow::onToolButtonClicked()
{
// 创建子窗口并显示
SubWindow *subWindow = new SubWindow(this);
subWindow->setAttribute(Qt::WA_DeleteOnClose);
subWindow->show();
}
// 子窗口类
class SubWindow : public QWidget
{
Q_OBJECT
public:
SubWindow(QWidget *parent = nullptr);
~SubWindow();
private:
QWidget *m_centerWidget;
};
SubWindow::SubWindow(QWidget *parent)
: QWidget(parent)
{
// 创建中心窗口并设置布局
m_centerWidget = new QWidget(this);
QVBoxLayout *layout = new QVBoxLayout;
QLabel *label = new QLabel("Center Widget");
layout->addWidget(label);
m_centerWidget->setLayout(layout);
// 设置布局
QVBoxLayout *mainLayout = new QVBoxLayout;
mainLayout->addWidget(m_centerWidget);
setLayout(mainLayout);
}
SubWindow::~SubWindow()
{
}
```
阅读全文