如何在QT中实现自己的标题栏

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何在QT中实现自己的标题栏相关的知识,希望对你有一定的参考价值。

参考技术A 有时候我们觉得QMainWindow的标题栏不太适合我们的程序要求,而想设计自己的标题栏。这时在构造QMainWindow的时候我们可以设置标记为Qt::FramelessWindowHint,这时我们将得到一个无标题栏的窗口。但是问题也随之而来:我们无法移动这个窗口(有标题栏的时候我们可以通过点击标题栏实现窗口的拖曳)。这时我们可以通过重载QMainWindow的两个成员函数实现窗口的拖动功能:
last 和 pos0分别为MainWindow的成员变量
void MainWindow::mouseMoveEvent(QMouseEvent *e)

QPoint temp = e->pos();
const int pos_min_x = ui->titleWidget->pos().x();
const int pos_max_x = pos_min_x + ui->titleWidget->width();
const int pos_min_y = ui->titleWidget->pos().y();
const int pos_max_y = pos_min_y + ui->titleWidget->height();
if ( temp.x()>pos_min_x && temp.x()<pos_max_x && temp.y()>pos_min_y && temp.y()<pos_max_y )

//只对标题栏范围内的鼠标事件进行处理
QPoint newpos = e->globalPos();
QPoint upleft = pos0 + newpos - last;
move(upleft);


void MainWindow::mousePressEvent(QMouseEvent *e)

QPoint temp = e->pos();
const int pos_min_x = ui->titleWidget->pos().x();
const int pos_max_x = pos_min_x + ui->titleWidget->width();
const int pos_min_y = ui->titleWidget->pos().y();
const int pos_max_y = pos_min_y + ui->titleWidget->height();
if ( temp.x()>pos_min_x && temp.x()<pos_max_x && temp.y()>pos_min_y && temp.y()<pos_max_y )

//只对标题栏范围内的鼠标事件进行处理。
last = e->globalPos();
pos0 = e->globalPos() - e->pos();

如何在 iOS 中实现错误栏?

【中文标题】如何在 iOS 中实现错误栏?【英文标题】:How to implement Error bar in iOS? 【发布时间】:2014-06-08 14:27:30 【问题描述】:

我是 iOS 编程和学习课程的新手。

其中一个作业是关于实现一个错误栏,它会在没有网络时显示。

它还说不要使用UIAlertView

有人可以指出资源如何做这样的事情吗?我什至不知道要搜索什么。我尝试了implementing error bar 和类似的查询,但没有产生任何有用的结果。

【问题讨论】:

您是否只是考虑了问题以及如何解决它,而不是仅仅尝试搜索?你想到了什么? 这是一个自定义视图——对于现成的代码,我建议使用 cocoacontrols 【参考方案1】:

这是一个自定义视图,默认情况下您不会在 Xcode 中找到任何这些视图。您可以自己实现它 - 但当然它需要一些时间和知识。或者您可以获得任何现成的解决方案。

我发现了一个名为 CWStatusBarNotification 的东西,我知道它不一样,但这是一个很好的开始方式。

尝试在CocoaPods 中搜索。您可以在那里找到许多不错的库,其中包含文档、教程等。

【讨论】:

以上是关于如何在QT中实现自己的标题栏的主要内容,如果未能解决你的问题,请参考以下文章

如何在Android中实现全屏,去掉标题栏效果

如何在 UIPageviewcontroller 中实现静态菜单栏?

如何在 iOS 中实现错误栏?

如何在angularjs中实现导航栏

如何在导航栏菜单中实现平滑的向下滑动效果

如何在 Flutter 中实现应用栏操作文本而不是操作图标?