【问题标题】:Qt Frameless/Borderless Window (like in Visual Studio UI)Qt 无框/无边框窗口(如在 Visual Studio UI 中)
【发布时间】:2015-04-15 14:31:13
【问题描述】:

我正在尝试在 Qt 5.2 C++ 中实现无框窗口。

这个答案 - 对我来说是完美的,但在 Qt5 中不再适用 - Borderless window in Qt on Windows which supports native features: aero snap, DWM resize and minimization

我所做的是创建了一个基本的 MainWindow 小部件,通过样式表设置属性,这几乎就是我想要的,除了一些东西。

这段代码:

MainWindow::MainWindow(QWidget *parent) : QMainWindow(parent, Qt::CustomizeWindowHint ), ui(new Ui::MainWindow)
{
    ui->setupUi(this);
    //this->setFixedSize(300, 450);
    this->statusBar()->setSizeGripEnabled(true);
    this->setStyleSheet("background-color: white; border: 1px solid red;");
    this->setWindowFlags(Qt::FramelessWindowHint);
    this->setAttribute(Qt::WA_TranslucentBackground, true);
}

会给我-几乎-我想要的,主要问题是-

  1. 顶部有一些奇怪的栏,看起来像这样。当我右键单击该栏,然后左键单击复选框时,它就会消失。我如何默认禁用此功能? (请原谅第 3 方链接,StackOverflow 不允许新人在这里托管图片)

http://i57.tinypic.com/2iapqnn.png

  1. 如图所示,只有侧边框是 1 px,而上/下边框更像是 4 px。底部还有一个奇怪的栏(类似于顶部的那个,在它被删除之前),我想删除它。如何禁用底部栏,并确保所有边框的宽度正好为 1 像素?

http://i62.tinypic.com/28qsnrk.png

我想要的只是一个空白的、可调整大小的、带有 1 px 红色边框的窗口。

非常感谢您的帮助。祝你有美好的一天。

【问题讨论】:

    标签: c++ qt user-interface


    【解决方案1】:

    顶部有一些奇怪的栏,看起来像这样。当我右键单击该栏,然后左键单击复选框时,它就会消失。 我如何默认禁用此功能? (请原谅第 3 方链接, StackOverflow 不允许新手在这里托管图片)

    我是工具栏。要删除它:在Qt Design视图->对象列表->右键单击mainToolBar,然后删除它!

    如图所示,只有侧边框是 1 px,而上/下边框更像是 4 px。底部还有一个奇怪的栏(类似于顶部的那个,在它被删除之前),我想删除它。如何禁用底部栏,并确保所有边框的宽度均为 1 px?

    这是你的状态栏,和你对工具栏做的一样。

    【讨论】:

    • 非常感谢您的回答 csguth!你会向我解释如何在代码中做到这一点吗?很多时候我不使用 Qt Designer。
    • 我用过这段代码 - QList allToolBars = mainWindow->findChildren(); foreach(QToolBar *tb, allToolBars) { // 这不会删除工具栏。 mainWindow->removeToolBar(tb);但问题是只有顶部栏被删除,而不是底部栏。你知道如何删除代码中的底部吗?
    • OK,要删除statusBar,你可以删除ui->statusBar !!所以这几乎解决了所有问题,但我的顶部边框仍然在 4 px 左右,其余边框是 1 px,你知道如何解决这个问题吗?再次感谢!
    猜你喜欢
    • 1970-01-01
    • 2011-01-15
    • 1970-01-01
    • 1970-01-01
    • 2011-06-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多