gpt4 book ai didi

c++ - Qt,无法显示子部件

转载 作者:搜寻专家 更新时间:2023-10-31 00:22:57 25 4
gpt4 key购买 nike

我有两个小部件定义如下

class mainWindow : public QWidget
{
Q_OBJECT
public:
mainWindow();
void readConfig();
private:
SWindow *config;
QVector <QString> filePath;
QVector <QLabel*> alias,procStatus;
QVector <int> delay;
QGridLayout *mainLayout;
QVector<QPushButton*> stopButton,restartButton;
QVector<QProcess*> proc;
QSignalMapper *stateSignalMapper, *stopSignalMapper, *restartSignalMapper;
public slots:
void openSettings();
void startRunning();
void statusChange(int);
void stopProc(int);
void restartProc(int);
void renew();
};
class SWindow : public QWidget
{
Q_OBJECT
public:
SWindow(QWidget *parent=0);
void readConfig();
void addLine(int);
private:
QVector<QPushButton*> selectButton;
QVector<QLabel*> filePath;
QVector<QLineEdit*> alias;
QSignalMapper *selectSignalMapper;
QVector<QSpinBox*> delay;
QGridLayout *mainLayout;
public slots:
void selectFile(int);
void saveFile();
void addLineSlot();
};

当我像这样从 mainWindow 创建和显示 SWindow 对象时

void mainWindow::openSettings()
{
config = new SWindow();
config->show();
}

一切正常,但现在我需要从 SWindow 访问主窗口,并且

void mainWindow::openSettings()
{
config = new SWindow(this);
config->show();
}

不显示 SWindow。如何显示 SWindow?

如何在小部件关闭时调用函数?

最佳答案

默认一个QWidget isn't a window .如果它不是一个窗口并且您指定了一个父窗口,它将显示在父窗口中(因此在您的情况下它可能被 mainWindow 中的其他小部件隐藏)。

windowFlags()也。或者您可以让您的 SWindow 继承自 QDialog,具体取决于您使用它的目的。

至于在小部件关闭时调用函数:您可以重新实现 closeEvent() .

关于c++ - Qt,无法显示子部件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2694802/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com