gpt4 book ai didi

c++ - 文本来自 QPushButton 时如何启用 QLineEdit 编辑?

转载 作者:太空宇宙 更新时间:2023-11-04 12:53:01 25 4
gpt4 key购买 nike

在我的项目中,我使用了两个QPushButton 和两个QLineEdit。我以这种方式将这些 QPushButton 与这些 QLineEdit 连接起来,以便 QPushButton 允许用户从硬盘驱动器中选择一个文件夹并在选择后,对应的QLineEdit会显示选中文件夹的URL路径。

如果用户不想单击QPushButton 并选择文件夹,我还允许用户自己编写URL。而且如果用户愿意,他还可以在通过QPushButton 选择后编辑URL

这里我面临两个问题。

1) 一个QLineEdit允许用户书写,而另一个则不允许。

2) 当用户按下QPushButton时,相应QLineEdit上的书写模式被禁用。

下面是代码。这里的InputLineOutputLine是两个QLineEdit

MainWindow::MainWindow(QWidget *parent) :
QMainWindow(parent),
ui(new Ui::MainWindow)
{
ui->setupUi(this);

/* Setting the size of Mainwindow */
this->setWindowTitle("Crop Multiple Object");
this->setFixedHeight(600);
this->setFixedWidth(800);

/* Setting QLabel for displaying Image */
QLabel* image= new QLabel(this);
image->setGeometry(20,130,500,430);
image->setStyleSheet("QLabel {background-color: rgb(200,200,200)}");
image->show();

/* Set input URL */
QPushButton* InputURL = new QPushButton(this);
InputURL->setText("Input URL");
InputURL->setGeometry(20,30,100,30);
connect(InputURL, SIGNAL(clicked(bool)), this, SLOT(ReceiveInputURL()));

/* Set output URL */
QPushButton* OutputURL = new QPushButton(this);
OutputURL->setText("Output URL");
OutputURL->setGeometry(20,80,100,30);
connect(OutputURL, SIGNAL(clicked(bool)), this, SLOT(ReceiveOutputURL()));

/* Set Input URL Line*/
InputLine->setGeometry(140,30,400,30);
OutputLine->setGeometry(140,80,400,30);
}

MainWindow::~MainWindow()
{
delete ui;
}

void MainWindow::ReceiveInputURL()
{
QFileDialog dialog(this);
dialog.setNameFilter(tr("Images (*.png *.xpm *.jpg)"));
dialog.setViewMode(QFileDialog::Detail);
QString dir = QFileDialog::getExistingDirectory(this, tr("Input Image File"),
"/home",
QFileDialog::ShowDirsOnly
| QFileDialog::DontResolveSymlinks);
if(!dir.isEmpty())
{
InputLine->setText(dir + "/");
}

}

void MainWindow::ReceiveOutputURL()
{
QFileDialog dialog(this);
dialog.setViewMode(QFileDialog::Detail);
QString dir = QFileDialog::getExistingDirectory(this, tr("Output Image File"),
"/home",
QFileDialog::ShowDirsOnly
| QFileDialog::DontResolveSymlinks);
if(!dir.isEmpty())
{
OutputLine->setText(dir+ "/");
}
}

我很感激任何帮助。提前致谢。

最佳答案

问题是您在创建MainWindowcentralWidget 之前创建您的QLineEdit 对象。这会将中央小部件置于 QLineEdit 小部件之上,因此它会阻止鼠标事件通过。要对此进行测试,您可以使用 centralWidget()->setAttribute(Qt::WA_TransparentForMouseEvents); 禁用中央小部件的鼠标事件,您会注意到您的 QLineEdit 小部件可以通过鼠标点击访问。

但是,您不应将任何小部件直接放置在 MainWindow 上。这不是应该使用 QMainWindow 的方式。相反,您应该将小部件放在 centralWidget 上。您应该阅读 docs of QMainWindow了解更多。

关于c++ - 文本来自 QPushButton 时如何启用 QLineEdit 编辑?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48046966/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com