在Qt中繪制坐標軸和刻度可以通過繼承QWidget類并重寫其paintEvent方法來實現。以下是一個簡單的示例代碼:
#include <QtWidgets>
class PlotWidget : public QWidget
{
public:
PlotWidget(QWidget *parent = nullptr) : QWidget(parent) {}
protected:
void paintEvent(QPaintEvent *event) override
{
Q_UNUSED(event);
QPainter painter(this);
painter.setRenderHint(QPainter::Antialiasing, true);
// 繪制坐標軸
painter.drawLine(50, height() - 50, 50, 50); // 縱軸
painter.drawLine(50, height() - 50, width() - 50, height() - 50); // 橫軸
// 繪制刻度
int numTicks = 10;
for (int i = 0; i <= numTicks; ++i)
{
int x = 50 + i * (width() - 100) / numTicks;
painter.drawLine(x, height() - 50, x, height() - 45); // 底部刻度
painter.drawLine(50, height() - 50 - i * (height() - 100) / numTicks, 45, height() - 50 - i * (height() - 100) / numTicks); // 左側刻度
}
}
};
int main(int argc, char *argv[])
{
QApplication app(argc, argv);
PlotWidget plot;
plot.resize(400, 300);
plot.show();
return app.exec();
}
在上面的示例中,繪制了一個簡單的坐標軸和刻度,縱軸和橫軸分別位于左側和底部,刻度的數量為10個。可以根據具體需求對繪制坐標軸和刻度的樣式進行調整。