添加链接
link管理
链接快照平台
  • 输入网页链接,自动生成快照
  • 标签化管理网页链接

要在 Qt C++ 中让 QMainWindow 不能关闭、隐藏右上角的关闭按钮,但保留最小化和最大化按钮,你可以结合使用 setWindowFlags Qt::CustomizeWindowHint

以下是一个示例代码:

#include <QMainWindow>
#include <QCloseEvent>
class MyMainWindow : public QMainWindow
public:
    MyMainWindow(QWidget *parent = nullptr) : QMainWindow(parent)
        // 设置窗口标志,只显示标题栏,并隐藏关闭按钮
        setWindowFlags(Qt::Window | Qt::WindowTitleHint | Qt::WindowMinimizeButtonHint | Qt::WindowMaximizeButtonHint | Qt::CustomizeWindowHint);
    void closeEvent(QCloseEvent *event) override
        // 取消关闭事件
        event->ignore();
int main(int argc, char *argv[])
    QApplication app(argc, argv);
    MyMainWindow window;
    window.show();
    return app.exec();

在上述示例中,我们创建了一个自定义的 QMainWindow 子类 MyMainWindow。在构造函数中,我们使用 setWindowFlags 来设置窗口标志,限制为只有标题栏,并通过 Qt::CustomizeWindowHint 隐藏了关闭按钮。同时保留了最小化和最大化按钮。

同时,在重写的 closeEvent 方法中,我们调用 event->ignore() 来取消关闭事件,从而阻止 QMainWindow 关闭。

请注意包含相应的头文件和启动应用程序的代码。运行示例后,你会看到右上角的关闭按钮已被隐藏,并且无法通过点击该按钮来关闭窗口,但最小化和最大化按钮仍然可用。


内容由零声教学AI助手提供,问题来源于学员提问

本站部分文章来源于网络,版权归原作者所有,如有侵权请联系站长删除。
转载请注明出处:https://qt.0voice.com/?id=8663

QJsonArray banswerArray = chooseMultipleAnswerObj["banswer"].toArray(); for (const QJsonValue& value : banswerArray) { subject.subject_Type.choose_multiple.banswer.append(value.toString()); QJ...

这个错误是因为您正在尝试在指向QList<QString>的指针上调用append函数,而不是直接访问该列表。由于subject.subject_Type.choose_multiple.banswer是一个指向Q...

E:\YZYEdu\YZYEdu\SystemExam\choose.cpp:28: error: no matching function for call to 'QLabel::setText(QList&)' ui->labelA->setText(banswer[0]);

错误提示显示在第28行,表明在调用QLabel::setText()函数时没有匹配的函数参数。根据您提供的代码片段,问题可能出在以下几个地方:参数类型不匹配:QLabel::setText()函数接受一个字符串作为参数,而您传递...

  • QJsonArray banswerArray = chooseMultipleAnswerObj["banswer"].toArray(); for (const QJsonValue& value : banswerArray) { subject.subject_Type.choose_multiple.banswer.append(value.toString()); QJ...

  • qt中的c++文件打印信息中文为乱码

  • E:\YZYEdu\YZYEdu\SystemExam\choose.cpp:28: error: no matching function for call to 'QLabel::setText(QList&)' ui->labelA->setText(banswer[0]);

  • spinBox 设置值

  • QListWidget怎么获取项目数

  • painter.setCompositionMode(QPainter::CompositionMode_Clear); // 设置绘图模式为擦除模式 painter.setPen(Qt::transparent); // 设置画笔颜色为透明 // 绘制当前路径,会以透明色进行擦除 const QPainterPath& erasePath = paths[currentPathIndex];