c++在一个widget类中有两个groupbox,一个groupbox中有一个label和一个lineEdit,另一个groupbox中有一个label和一个lineEdit和pushbotton,用于读取文件路径,并咋LINEdit中显示出来
时间: 2023-06-19 21:08:23 浏览: 74
您可以这样实现:
1. 在widget类的头文件中声明两个GroupBox、两个Label、两个LineEdit和一个PushButton:
```cpp
class Widget : public QWidget
{
Q_OBJECT
public:
Widget(QWidget *parent = nullptr);
~Widget();
private:
QGroupBox *groupBox1;
QLabel *label1;
QLineEdit *lineEdit1;
QGroupBox *groupBox2;
QLabel *label2;
QLineEdit *lineEdit2;
QPushButton *pushButton;
private slots:
void getFilePath();
};
```
2. 在widget类的构造函数中创建GroupBox、Label、LineEdit和PushButton,并设置它们的属性和布局:
```cpp
Widget::Widget(QWidget *parent)
: QWidget(parent)
{
groupBox1 = new QGroupBox("GroupBox 1");
label1 = new QLabel("Label 1:");
lineEdit1 = new QLineEdit;
QVBoxLayout *layout1 = new QVBoxLayout;
layout1->addWidget(label1);
layout1->addWidget(lineEdit1);
groupBox1->setLayout(layout1);
groupBox2 = new QGroupBox("GroupBox 2");
label2 = new QLabel("Label 2:");
lineEdit2 = new QLineEdit;
pushButton = new QPushButton("Browse");
QHBoxLayout *layout2 = new QHBoxLayout;
layout2->addWidget(label2);
layout2->addWidget(lineEdit2);
layout2->addWidget(pushButton);
groupBox2->setLayout(layout2);
QVBoxLayout *mainLayout = new QVBoxLayout;
mainLayout->addWidget(groupBox1);
mainLayout->addWidget(groupBox2);
setLayout(mainLayout);
connect(pushButton, SIGNAL(clicked()), this, SLOT(getFilePath()));
}
```
3. 在widget类中添加一个私有槽函数getFilePath(),用于弹出文件选择对话框,并将选择的文件路径显示在lineEdit2中:
```cpp
void Widget::getFilePath()
{
QString filePath = QFileDialog::getOpenFileName(this, tr("Open File"), ".", tr("Text Files (*.txt)"));
if (!filePath.isEmpty())
{
lineEdit2->setText(filePath);
}
}
```
这样,您就实现了在一个widget类中有两个groupbox,一个groupbox中有一个label和一个lineEdit,另一个groupbox中有一个label和一个lineEdit和pushbotton,用于读取文件路径,并将文件路径显示在lineEdit中的功能。
阅读全文