0

给定一个现有的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的对齐方式”的目标,而且只是......太多的代码只是为了改变一个美学属性:

  1. 创建轴的新副本——这是一项不平凡的(在某些情况下是不可能的)任务,尤其是在需要支持任意QAbstractAxis衍生轴的情况下。将所需的新对齐方式传递给构造函数。
  2. 创建现有轴附加到的所有系列的列表(如果您有多轴图表,则需要)。
  3. 从图表中删除现有轴。
  4. 将新轴添加到图表中。
  5. 将新轴重新连接到使用旧轴的所有系列。

const对齐属性是并且是构造函数参数对我来说有点奇怪,但是,谁知道...

4

0 回答 0