如何使QLineEdit编辑在文本来自QPushButton时启用
How to make QLineEdit editing enabled while text comes from a QPushButton?
在我的项目中,我使用了两个QPushButton
和两个QLineEdit
。我以这种方式将这些QPushButton
与这些QLineEdit
连接起来,以便QPushButton
允许用户从硬盘驱动器中选择一个文件夹,选择后,相应的QLineEdit
将显示所选文件夹的URL
路径。
我也喜欢允许用户自己编写URL
,如果他不想点击QPushButton
并选择文件夹。而且如果用户愿意,他也可以在选择后编辑URL
QPushButton
.
在这里,我面临两个问题。
1(一个QLineEdit
允许用户写入,但另一个不允许用户。
2(当用户按下QPushButton
时,相应QLineEdit
上的写入模式将被禁用。
以下是代码。这里的InputLine
和OutputLine
是两个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+ "/");
}
}
我感谢任何帮助。提前谢谢。
问题是您在创建MainWindow
centralWidget
之前创建QLineEdit
对象。这会将中央小部件放在QLineEdit
小部件的顶部,因此它会阻止鼠标事件通过。要对此进行测试,您可以使用 centralWidget()->setAttribute(Qt::WA_TransparentForMouseEvents);
禁用中央小部件的鼠标事件,您会注意到可以通过鼠标单击访问您的QLineEdit
小部件。
但是,您不应直接在MainWindow
上放置任何小部件。这不是QMainWindow
应该如何使用的。相反,您应该将小部件放在 centralWidget
.您应该阅读QMainWindow
的文档以了解更多信息。
相关文章:
- 在单击 QPushButton 时调用带有参数的函数
- 按下 QPushbutton 时将文本保存到文件
- QProcess无法通过QPushButton执行终端线路命令
- 在两个类之间连接QPushButton
- QGraphicsScene 中的 QPushButton 需要双击而不是单击
- 如何在取消选择QCheckBox时禁用QPushButton
- 使用 QpushButton 切换显示在 QLabel 中的图像
- 如何从QPushButton检索图标
- QT QPushButton Press Event
- 如何将QPushButton放入小部件中的Qt3DWindow中?
- 如何释放QPushButton的焦点,这是QDialog的默认按钮
- QPushButton 错误在 QT5 下,同时推动在 macOS 上进入全屏
- 在按下Qpushbutton时做点什么
- 创建一个 2 行(不换行)的 QPushButton
- 设置QPUSHBUTTON的最小宽度,同时保持默认的最小尺寸行为
- 调用 'QGridLayout::addWidget(QPushButton, int&, int&) 时没有匹配函数
- 从QStringList为QPushButton制作指针
- qt如何连接QPushButton的2D数组并返回位置
- 如何在点击的QPushButton的位置画一个形状
- 访问回调函数中的 QPushButton