Qt中有没有其他方法可以直接在信号槽机制下获取子窗口的图标?
时间: 2024-12-08 19:17:23 浏览: 14
在Qt中,如果你想要在信号槽机制下获取子窗口的图标,通常需要在创建子窗口时将窗口图标作为槽参数传递,或者在窗口对象上设置一个公共的槽函数来返回图标。例如,你可以在子窗口的构造函数中保存图标,并提供一个信号(signal)来触发获取图标的请求:
```cpp
class SubWindow : public QMainWindow {
public:
explicit SubWindow(QWidget *parent = nullptr, QIcon icon)
: QMainWindow(parent), myIcon(icon) {
// ...
connect(this, &SubWindow::requestIcon, this, [this]() { emit iconChanged(myIcon); });
}
signals:
void iconChanged(QIcon icon);
protected slots:
void slotRequestIcon() override { emit iconChanged(myIcon); }
};
// 在主窗口中处理子窗口的信号
void mainWindow,SLOT(onSubWindowCreated(SubWindow* subWindow)) {
connect(subWindow, &SubWindow::iconChanged, this, [subWindow](QIcon icon) {
setWindowTitleWithIcon(subWindow->windowTitle(), icon);
});
}
void setWindowTitleWithIcon(const QString& title, const QIcon& icon) {
// 设置父窗口标题栏的图标
setWindowIcon(icon);
setWindowTitle(title);
}
```
在这个例子中,当你创建子窗口时,可以为其指定图标,并连接一个信号`iconChanged`,当需要时(如父窗口中某个按钮点击事件),子窗口会发送此信号,父窗口收到后更新自身标题栏的图标。
阅读全文