qtc++实现打开主界面后点击按钮弹出工程选择界面,工程选择完成后弹出信息填写界面,填写完成后返回主界面,且主界面原有的隐藏控件treewidget可以显示,其中三个界面已经手动创建。代码示例
时间: 2024-05-13 12:16:46 浏览: 87
以下是一个简单的Qt C++代码示例,实现了你所描述的功能:
```cpp
#include <QApplication>
#include <QWidget>
#include <QPushButton>
#include <QFileDialog>
#include <QVBoxLayout>
#include <QLineEdit>
#include <QLabel>
int main(int argc, char *argv[])
{
QApplication app(argc, argv);
// 创建主界面
QWidget mainWidget;
mainWidget.setWindowTitle("主界面");
// 创建工程选择界面
QWidget projectWidget;
projectWidget.setWindowTitle("工程选择界面");
projectWidget.hide(); // 初始时隐藏
QVBoxLayout projectLayout(&projectWidget);
QPushButton projectButton("选择工程", &projectWidget);
QLabel projectLabel("当前选择的工程:", &projectWidget);
QLineEdit projectLineEdit(&projectWidget);
projectLineEdit.setReadOnly(true);
projectLayout.addWidget(&projectButton);
projectLayout.addWidget(&projectLabel);
projectLayout.addWidget(&projectLineEdit);
QObject::connect(&projectButton, &QPushButton::clicked, [&]() {
QString filename = QFileDialog::getOpenFileName(&projectWidget,
"选择工程文件", ".", "工程文件 (*.pro)");
if (!filename.isEmpty()) {
projectLineEdit.setText(filename);
projectWidget.hide(); // 工程选择完成后隐藏该界面
mainWidget.show(); // 显示主界面
}
});
// 创建信息填写界面
QWidget infoWidget;
infoWidget.setWindowTitle("信息填写界面");
infoWidget.hide(); // 初始时隐藏
QVBoxLayout infoLayout(&infoWidget);
QLabel infoLabel("请填写以下信息:", &infoWidget);
QLineEdit infoLineEdit(&infoWidget);
QPushButton infoButton("确定", &infoWidget);
infoLayout.addWidget(&infoLabel);
infoLayout.addWidget(&infoLineEdit);
infoLayout.addWidget(&infoButton);
QObject::connect(&infoButton, &QPushButton::clicked, [&]() {
// 处理信息填写完成事件
infoWidget.hide(); // 隐藏信息填写界面
mainWidget.show(); // 显示主界面
});
// 创建主界面中的控件
QVBoxLayout mainLayout(&mainWidget);
QPushButton projectSelectButton("选择工程", &mainWidget);
QPushButton infoInputButton("信息填写", &mainWidget);
QWidget treeWidget(&mainWidget); // 原有的隐藏控件
treeWidget.hide(); // 初始时隐藏
mainLayout.addWidget(&projectSelectButton);
mainLayout.addWidget(&infoInputButton);
mainLayout.addWidget(&treeWidget);
QObject::connect(&projectSelectButton, &QPushButton::clicked, [&]() {
mainWidget.hide(); // 隐藏主界面
projectWidget.show(); // 显示工程选择界面
});
QObject::connect(&infoInputButton, &QPushButton::clicked, [&]() {
mainWidget.hide(); // 隐藏主界面
infoWidget.show(); // 显示信息填写界面
});
// 显示主界面
mainWidget.show();
return app.exec();
}
```
这个示例代码可以通过三个窗口实现你所需要的功能,你可以根据自己的需求进行修改和扩展。
阅读全文