C++Qt在用两个QRadioButton控制创建的Qcustom的图形,选择第一个QRadioButton,出现Qcustom中第一个图形,选择第二个QRadioButton,出现Qcustom中的第二个图形完整代码实现
时间: 2024-03-10 15:47:13 浏览: 138
下面是一个完整的示例代码,它演示了如何使用QButtonGroup和QCustomPlot来实现这个功能:
```cpp
#include <QtWidgets>
#include "qcustomplot.h"
class MainWindow : public QMainWindow
{
Q_OBJECT
public:
MainWindow(QWidget *parent = 0)
: QMainWindow(parent)
{
// 创建QButtonGroup并添加QRadioButton
QButtonGroup *buttonGroup = new QButtonGroup(this);
QRadioButton *radioButton1 = new QRadioButton("图形1", this);
QRadioButton *radioButton2 = new QRadioButton("图形2", this);
buttonGroup->addButton(radioButton1);
buttonGroup->addButton(radioButton2);
// 创建QCustom图形
QCustomPlot *customPlot = new QCustomPlot(this);
customPlot->setMinimumSize(400, 300);
customPlot->addGraph()->setData(QVector<double>() << 1 << 2 << 3, QVector<double>() << 1 << 2 << 3);
customPlot->addGraph()->setData(QVector<double>() << 1 << 2 << 3, QVector<double>() << 3 << 2 << 1);
// 连接信号槽
connect(buttonGroup, SIGNAL(buttonToggled(int,bool)), this, SLOT(onRadioButtonToggled(int,bool)));
// 设置布局
QWidget *centralWidget = new QWidget(this);
QVBoxLayout *layout = new QVBoxLayout(centralWidget);
layout->addWidget(radioButton1);
layout->addWidget(radioButton2);
layout->addWidget(customPlot);
setCentralWidget(centralWidget);
}
private slots:
void onRadioButtonToggled(int id, bool checked)
{
QCustomPlot *customPlot = findChild<QCustomPlot *>();
if (!customPlot)
return;
if (checked) {
int graphIndex = id + 1;
for (int i = 0; i < customPlot->graphCount(); ++i) {
if (i == graphIndex - 1)
customPlot->graph(i)->setVisible(true);
else
customPlot->graph(i)->setVisible(false);
}
customPlot->replot();
}
}
};
int main(int argc, char *argv[])
{
QApplication app(argc, argv);
MainWindow window;
window.show();
return app.exec();
}
#include "main.moc"
```
在这个示例代码中,我们创建了一个MainWindow类,它包含一个QButtonGroup和一个QCustomPlot。我们使用addGraph函数向QCustomPlot中添加了两个图形。我们将两个QRadioButton添加到QButtonGroup中,并将它们的toggled信号连接到onRadioButtonToggled槽函数。在槽函数中,我们使用setVisible函数来设置QCustomPlot中对应的图形的可见性。注意,我们使用了findChild函数来查找QCustomPlot对象。最后,我们将QButtonGroup、QCustomPlot和QRadioButton添加到了一个垂直布局中,并将该布局设置为MainWindow的中央窗口部件。
阅读全文