Qt create 使用qlistwidget 和qstackedwidget 动态增删改显示隐藏页 功能实现,由另一个文件引用,并详细写名引用文件使用具体步骤
时间: 2024-02-06 13:10:15 浏览: 38
首先,在Qt Creator中创建一个新的Qt Widgets应用程序项目。在主窗口上添加一个QListWidget和一个QStackedWidget。
接下来,我们将创建一个独立的类来实现动态添加、删除、修改和显示/隐藏QStackedWidget页面的功能。我们可以称之为PageManager类。在Qt Creator中,我们可以通过“File”->“New File or Project”->“C++ Class”来创建一个新的C++类。
在PageManager类的头文件中,我们需要包含以下头文件:
```cpp
#include <QWidget>
#include <QListWidget>
#include <QStackedWidget>
```
然后我们需要定义一个PageManager类,该类继承自QWidget类:
```cpp
class PageManager : public QWidget
{
Q_OBJECT
public:
explicit PageManager(QWidget *parent = nullptr);
void addPage(QString name, QWidget *page);
void deletePage(int index);
void editPage(int index, QString newName);
void showPage(int index);
void hidePage(int index);
int pageCount();
private:
QListWidget *m_listWidget;
QStackedWidget *m_stackedWidget;
};
```
在PageManager类的实现文件中,我们需要实现上述头文件中声明的函数。具体实现如下所示:
```cpp
PageManager::PageManager(QWidget *parent) : QWidget(parent)
{
m_listWidget = new QListWidget(this);
m_stackedWidget = new QStackedWidget(this);
QVBoxLayout *layout = new QVBoxLayout(this);
layout->addWidget(m_listWidget);
layout->addWidget(m_stackedWidget);
connect(m_listWidget, SIGNAL(currentRowChanged(int)), m_stackedWidget, SLOT(setCurrentIndex(int)));
}
void PageManager::addPage(QString name, QWidget *page)
{
m_listWidget->addItem(name);
m_stackedWidget->addWidget(page);
}
void PageManager::deletePage(int index)
{
if (m_stackedWidget->count() > 0 && index >= 0 && index < m_stackedWidget->count())
{
m_listWidget->takeItem(index);
m_stackedWidget->removeWidget(m_stackedWidget->widget(index));
}
}
void PageManager::editPage(int index, QString newName)
{
if (m_listWidget->count() > 0 && index >= 0 && index < m_listWidget->count())
{
QListWidgetItem *item = m_listWidget->item(index);
item->setText(newName);
}
}
void PageManager::showPage(int index)
{
if (m_stackedWidget->count() > 0 && index >= 0 && index < m_stackedWidget->count())
{
m_listWidget->setCurrentRow(index);
}
}
void PageManager::hidePage(int index)
{
if (m_stackedWidget->count() > 0 && index >= 0 && index < m_stackedWidget->count())
{
m_listWidget->setCurrentRow(-1);
}
}
int PageManager::pageCount()
{
return m_stackedWidget->count();
}
```
在PageManager类中,我们创建了一个QListWidget和一个QStackedWidget,并将它们添加到PageManager类的布局中。我们还实现了addPage、deletePage、editPage、showPage、hidePage和pageCount函数,这些函数分别用于添加、删除、修改、显示/隐藏和获取QStackedWidget页面的数量。
现在我们已经完成了PageManager类的实现。接下来,我们需要在主窗口中使用该类。
在主窗口的头文件中,我们需要包含PageManager类的头文件:
```cpp
#include "pagemanager.h"
```
然后,在主窗口的构造函数中,我们可以创建一个PageManager对象,并使用addPage函数添加两个页面:
```cpp
MainWindow::MainWindow(QWidget *parent)
: QMainWindow(parent)
{
PageManager *pageManager = new PageManager(this);
pageManager->addPage("Page 1", new QWidget());
pageManager->addPage("Page 2", new QWidget());
setCentralWidget(pageManager);
}
```
这样,我们就可以在主窗口中使用PageManager类来管理QStackedWidget页面了。
希望这些步骤能够帮助你实现动态增删改显示隐藏页的功能。