用c++ qt ,给出一个代码示例:创建2个画面,其中画面1为空,为主画面,画面2为子画面,子画面上放一个标签,标签文本设置为"I LOVE YOU",主程序启动时,子画面贴在主画面一起启动,给出代码示例程序
时间: 2024-10-06 18:02:00 浏览: 26
在C++中使用Qt创建一个主窗口(画面1,无内容)和一个包含标签的子窗口(画面2),然后将子窗口作为插槽放置在主窗口上,当主窗口启动时,子窗口会出现在旁边。以下是一个简单的示例代码:
首先,在`.h`文件(比如`mainwindow.h`)中定义主窗口和子窗口类:
```cpp
// mainwindow.h
#ifndef MAINWINDOW_H
#define MAINWINDOW_H
#include <QMainWindow>
#include "subwindow.h"
class MainWindow : public QMainWindow
{
Q_OBJECT
public:
explicit MainWindow(QWidget *parent = nullptr);
~MainWindow();
private slots:
void openSubWindow();
private:
SubWindow *subWindow;
};
#endif // MAINWINDOW_H
```
接下来,在`.cpp`文件(比如`mainwindow.cpp`)中实现这两个类:
```cpp
// mainwindow.cpp
#include "mainwindow.h"
#include "subwindow.h"
MainWindow::MainWindow(QWidget *parent) :
QMainWindow(parent),
subWindow(nullptr)
{
}
MainWindow::~MainWindow()
{
delete subWindow;
}
void MainWindow::openSubWindow()
{
if (!subWindow) {
subWindow = new SubWindow(this); // 创建子窗口并将自身作为父窗口
subWindow->show(); // 显示子窗口
}
}
// subwindow.h
#ifndef SUBWINDOW_H
#define SUBWINDOW_H
#include <QWidget>
#include < QLabel>
class SubWindow : public QWidget
{
Q_OBJECT
public:
explicit SubWindow(QWidget *parent = nullptr);
private:
QLabel *label;
};
#endif // SUBWINDOW_H
```
最后,在`subwindow.cpp`中:
```cpp
// subwindow.cpp
#include "subwindow.h"
SubWindow::SubWindow(QWidget *parent) :
QWidget(parent),
label(new QLabel("I LOVE YOU", this))
{
setMinimumSize(200, 50); // 设置子窗口大小
QVBoxLayout *layout = new QVBoxLayout(this);
layout->addWidget(label);
.setLayout(layout);
}
```
现在在`main.cpp`中,你可以创建`MainWindow`并运行:
```cpp
#include "mainwindow.h"
#include <QApplication>
int main(int argc, char *argv[])
{
QApplication app(argc, argv);
MainWindow mainWindow;
mainWindow.show(); // 主窗口先显示
mainWindow.openSubWindow(); // 然后通过槽函数打开子窗口
return app.exec();
}
```
当你运行这个程序,主窗口启动时,子窗口会立即显示在主窗口右侧,标签的文字为“I LOVE YOU”。
阅读全文