彩票走势图

「Qt Widget中文示例指南」如何创建一个窗口标志?(二)

翻译|使用教程|编辑:龚雪|2024-11-14 10:46:31.693|阅读 8 次

概述:本文主要介绍展示如何使用Qt中可用的窗口标志,欢迎下载最新版组件体验~

# 慧都年终大促·界面/图表报表/文档/IDE等千款热门软控件火热促销中 >>

相关链接:

Qt 是目前最先进、最完整的跨平台C++开发工具。它不仅完全实现了一次编写,所有平台无差别运行,更提供了几乎所有开发过程中需要用到的工具。如今,Qt已被运用于超过70个行业、数千家企业,支持数百万设备及应用。

窗口标志要么是类型,要么是提示。类型用于为小部件指定各种窗口系统属性,一个小部件只能有一种类型,默认是,但是小部件可以有零个或多个提示;提示用于自定义顶级窗口的外观。

小部件的标志存储在Qt::WindowFlags类型中,该类型存储标志的OR组合。

「Qt Widget中文示例指南」如何创建一个窗口标志?(一)

Qt技术交流群:166830288      欢迎一起进群讨论

在上文中(点击这里回顾>>),我们为大家介绍了ControllerWindow类定义和实现,本文将继续介绍PreviewWindow类的定义和实现!

class PreviewWindow : public QWidget
{
Q_OBJECT

public:
PreviewWindow(QWidget *parent = nullptr);

void setWindowFlags(Qt::WindowFlags flags);

private:
QTextEdit *textEdit;
QPushButton *closeButton;
};

PreviewWindow类继承了,它是一个自定义小部件,在只读文本编辑器中显示其当前设置的窗口标志的名称,它还提供了一个关闭窗口的QPushbutton。

我们重新实现构造函数来创建关闭按钮和文本编辑器,并使用() 函数来显示窗口标志的名称。

「Qt Widget中文示例指南」如何创建一个窗口标志?(一)
PreviewWindow类实现

PreviewWindow::PreviewWindow(QWidget *parent)
: QWidget(parent)
{
textEdit = new QTextEdit;
textEdit->setReadOnly(true);
textEdit->setLineWrapMode(QTextEdit::NoWrap);

closeButton = new QPushButton(tr("&Close"));
connect(closeButton, &QPushButton::clicked,
this, &PreviewWindow::close);

QVBoxLayout *layout = new QVBoxLayout;
layout->addWidget(textEdit);
layout->addWidget(closeButton);
setLayout(layout);

setWindowTitle(tr("Preview"));
}

在构造函数中,我们首先创建t并确保它是只读的。

我们还使用()函数禁止文本编辑器中的任何换行,结果是当窗口标志的名称超过编辑器的宽度时,将出现水平滚动条。这是一个合理的解决方案,因为我们使用内置的换行符来构造显示的文本。如果没有保证换行,使用另一个可能更有意义。

然后我们创建Close按钮,并在设置窗口标题之前将这两个小部件放入中。

void PreviewWindow::setWindowFlags(Qt::WindowFlags flags)
{
QWidget::setWindowFlags(flags);

QString text;

Qt::WindowFlags type = (flags & Qt::WindowType_Mask);
if (type == Qt::Window)
text = "Qt::Window";
else if (type == Qt::Dialog)
text = "Qt::Dialog";
else if (type == Qt::Sheet)
text = "Qt::Sheet";
else if (type == Qt::Drawer)
text = "Qt::Drawer";
else if (type == Qt::Popup)
text = "Qt::Popup";
else if (type == Qt::Tool)
text = "Qt::Tool";
else if (type == Qt::ToolTip)
text = "Qt::ToolTip";
else if (type == Qt::SplashScreen)
text = "Qt::SplashScreen";

if (flags & Qt::MSWindowsFixedSizeDialogHint)
text += "\n| Qt::MSWindowsFixedSizeDialogHint";
if (flags & Qt::X11BypassWindowManagerHint)
text += "\n| Qt::X11BypassWindowManagerHint";
if (flags & Qt::FramelessWindowHint)
text += "\n| Qt::FramelessWindowHint";
if (flags & Qt::NoDropShadowWindowHint)
text += "\n| Qt::NoDropShadowWindowHint";
if (flags & Qt::WindowTitleHint)
text += "\n| Qt::WindowTitleHint";
if (flags & Qt::WindowSystemMenuHint)
text += "\n| Qt::WindowSystemMenuHint";
if (flags & Qt::WindowMinimizeButtonHint)
text += "\n| Qt::WindowMinimizeButtonHint";
if (flags & Qt::WindowMaximizeButtonHint)
text += "\n| Qt::WindowMaximizeButtonHint";
if (flags & Qt::WindowCloseButtonHint)
text += "\n| Qt::WindowCloseButtonHint";
if (flags & Qt::WindowContextHelpButtonHint)
text += "\n| Qt::WindowContextHelpButtonHint";
if (flags & Qt::WindowShadeButtonHint)
text += "\n| Qt::WindowShadeButtonHint";
if (flags & Qt::WindowStaysOnTopHint)
text += "\n| Qt::WindowStaysOnTopHint";
if (flags & Qt::WindowStaysOnBottomHint)
text += "\n| Qt::WindowStaysOnBottomHint";
if (flags & Qt::CustomizeWindowHint)
text += "\n| Qt::CustomizeWindowHint";

textEdit->setPlainText(text);
}

我们重新实现setWindowFlags()函数时,首先使用QWidget::setWindowFlags()函数设置小部件标志,然后遍历可用的窗口标志,创建一个文本,其中包含与flags参数匹配的标志的名称。最后,我们在widgets文本编辑器中显示文本。

Qt Widget组件推荐
  • QtitanRibbon - Ribbon UI组件:是一款遵循Microsoft Ribbon UI Paradigm for Qt技术的Ribbon UI组件,QtitanRibbon致力于为Windows、Linux和Mac OS X提供功能完整的Ribbon组件。
  • QtitanChart - Qt类图表组件:是一个C ++库,代表一组控件,这些控件使您可以快速地为应用程序提供漂亮而丰富的图表。
  • QtitanDataGrid - Qt网格组件:提供了一套完整的标准 QTableView 函数和传统组件无法实现的独特功能。使您能够将不同来源的各类数据加载到一个快速、灵活且功能强大的可编辑网格中,支持排序、分组、报告、创建带状列、拖放按钮和许多其他方便的功能。
  • QtitanDocking:允许您像 Visual Studio 一样为您的伟大应用程序配备可停靠面板和可停靠工具栏。黑色、白色、蓝色调色板完全支持 Visual Studio 2019 主题!

年终活动火热开启中

标签:

本站文章除注明转载外,均为本站原创或翻译。欢迎任何形式的转载,但请务必注明出处、不得修改原文相关链接,如果存在内容上的异议请邮件反馈至chenjj@pclwef.cn

文章转载自:慧都网

为你推荐

  • 推荐视频
  • 推荐活动
  • 推荐产品
  • 推荐文章
  • 慧都慧问
扫码咨询


添加微信 立即咨询

电话咨询

客服热线
023-68661681

TOP