给定一个现有的QAbstractAxis
,有没有办法改变它的对齐方式(Qt 5.15.2)?
例如,假设我有一个图表和一个按钮,当按下该按钮时,应该在图表的左侧和右侧之间切换 Y 轴:
MainWindow::MainWindow(QWidget *parent)
: QMainWindow(parent)
, ui(new Ui::MainWindow)
{
ui->setupUi(this);
QLineSeries *series = new QLineSeries;
series->append(0, 2);
series->append(1, 0);
series->append(2, 4);
series->append(3, 3);
QChart *chart = new QChart;
chart->addSeries(series);
chart->createDefaultAxes();
ui->chartView->setChart(chart);
}
void MainWindow::on_btnToggleYAxisSide_clicked () {
QAbstractAxis *axis = ui->chartView->chart()->axisY();
setAxisSide(axis, axis->alignment() ^ (Qt::AlignLeft | Qt::AlignRight));
}
我的目标是实现这个功能:
static void setAxisSide (QAbstractAxis *axis, Qt::Alignment alignment) {
// ???
}
有什么方法可以方便地做到这一点吗?
到目前为止,我能够弄清楚的唯一方法不符合我的“改变现有QAbstractAxis的对齐方式”的目标,而且只是......太多的代码只是为了改变一个美学属性:
- 创建轴的新副本——这是一项不平凡的(在某些情况下是不可能的)任务,尤其是在需要支持任意
QAbstractAxis
衍生轴的情况下。将所需的新对齐方式传递给构造函数。 - 创建现有轴附加到的所有系列的列表(如果您有多轴图表,则需要)。
- 从图表中删除现有轴。
- 将新轴添加到图表中。
- 将新轴重新连接到使用旧轴的所有系列。
const
对齐属性是并且是构造函数参数对我来说有点奇怪,但是,谁知道...