Qt's tips

本文介绍了Qt的重要概念sigal&slot,通过QObject::connect可让两个widget关联。还提到Qt支持Html tag,在String里加入tag可改变显示属性。同时介绍了Qt的layout manager布局管理,有水平、垂直、栅格三种布局,可嵌套使用构建复杂对话框程序。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Qt的一个重要概念 sigal&slot
QObject::connect(ob1, SIGNAL(valueChanged(int)), ob2, SLOT(setValue(int)));
QObject::connect(ob2, SIGNAL(valueChanged(int)), ob2, SLOT(setValue(int)));
这样两个widget就联系在一起了,改变其中一个,另一个也会跟着改变。

Qt支持Html tag,在String 里面加入tag,会改变显示属性。例如:
QLabel *label = new QLabel("<h2><i>hello</i>" "<font color=red>Qt!</font></h2>", 0);

在用户可见的字符串两端用tr( )包围是良好的习惯,以便于代码转换。
例:closeButton = new QPushButton(tr("close"),this);

用"&"声明快捷键,例“&close”即Alt+c。

Qt的layout manager 布局管理
有3种:
QHBoxLayout:水平布局,从左到右。
QVBoxLayout:垂直布局,从上到下。
QGridLayout:栅格布局。
Layout可以包含widget和layout,嵌套使用可组合为复杂的对话框程序。
使用成员方法:addWidget(),addLayout()
  addStrech()加入一个空间占据。
需要注意的是layout不是widget,layout派生于QLayout,QLayout派生于QObject。
虽然layout不是widget,但layout可以有parent(或child),但这个parent与widget的parent有区别。当layout以一个widget为parent构造时,这个layout自动安装到此widget上,如果构造无parent,则此layout必须使用addLayout()来插入另一个layout。
例:QHBoxLayout *ex1 = new QHBoxLayout(this);
    QVBoxLayout *ex2 = new QVBoxLayout;
    ex1->addLayout(ex2);

### QCustomPlot标签使用与自定义教程 QCustomPlot 是一款用于 Qt 应用程序中的绘图库,支持多种类型的图表绘制以及丰富的定制选项。对于 `label` 的使用和自定义,在 QCustomPlot 中主要涉及到几个方面: #### 设置轴标签 可以通过设置坐标轴对象来指定 X 轴或者 Y 轴上的文字说明。这通常通过调用 `QCPAxis::setLabel()` 方法实现。 ```cpp customPlot->xAxis->setLabel("Time (s)"); customPlot->yAxis->setLabel("Amplitude"); ``` 此方法允许开发者为每个轴分配描述性的名称以便于理解数据含义[^1]。 #### 自定义图形标题 除了单个轴的标签外,还可以给整个图形添加一个总的标题。这是利用 `QCPLegend` 类完成的;不过更常见的是直接操作 `QCustomPlot` 实例本身提供的接口来进行整体布局调整。 ```cpp customPlot->plotLayout()->insertRow(0); customPlot->plotLayout()->addElement(0, 0, new QCPTextElement(customPlot, "My Plot Title", QFont("sans", 12, QFont::Bold))); ``` 上述代码片段展示了如何向现有布局中插入新行并将文本元素作为顶部标题放置上去。 #### 数据点标记与提示框 当鼠标悬停在特定的数据点上时显示额外的信息是非常有用的特性之一。可以借助内置的小部件如 `QCPPolarGraphDataToolTip` 或者创建自定义 widget 来达到这一目的。另外一种方式就是启用默认工具提示功能并修改其样式以适应项目需求。 ```cpp // Enable tool tips globally for all plottables. customPlot->setInteractions(QCP::iRangeDrag | QCP::iRangeZoom | QCP::iSelectPlottables); for (int i = 0; i < graphCount; ++i) { customPlot->graph(i)->setScatterStyle(QCPScatterStyle(QCPScatterStyle::ssCircle)); customPlot->graph(i)->setLineStyle(QCPGraph::lsLine); } ``` 这段示例启用了交互模式下的拖拽缩放和平移,并设置了散点图样式的圆圈表示法,同时也开启了选中可绘制项的功能,从而间接影响到工具提示的行为表现。 #### 文本属性配置 无论是轴标签还是其他形式的文字展示,都可以进一步细化字体大小、颜色以及其他视觉效果。这些参数可通过相应的方法进行设定,例如改变字体外观或应用 HTML 风格字符串格式化内容。 ```cpp QFont font("Helvetica", 9); // Set a specific font family and size font.setBold(true); // Make it bold if necessary customPlot->xAxis->setFont(font); customPlot->yAxis->setFont(font); QString htmlFormattedLabel = "<b>Velocity</b><br>(m/s)"; customPlot->yAxis->setLabel(htmlFormattedLabel); ``` 这里不仅改变了字体特征还引入了简单的 HTML 标签结构使得多行或多级标题成为可能。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值