- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
在我的项目中,我使用了两个QPushButton
和两个QLineEdit
。我以这种方式将这些 QPushButton
与这些 QLineEdit
连接起来,以便 QPushButton
允许用户从硬盘驱动器中选择一个文件夹并在选择后,对应的QLineEdit
会显示选中文件夹的URL
路径。
如果用户不想单击QPushButton
并选择文件夹,我还允许用户自己编写URL
。而且如果用户愿意,他还可以在通过QPushButton
选择后编辑URL
。
这里我面临两个问题。
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
上。您应该阅读 docs of QMainWindow
了解更多。
关于c++ - 文本来自 QPushButton 时如何启用 QLineEdit 编辑?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48046966/
我在配置小部件上有多个 QLineEdit 小部件。 当配置文本更改时,我想存储更新后的值(其中有几个,所以我不想在最后的一个函数调用中传递它们)。 我正在考虑将它们连接到一个插槽或通过 QSigna
我有一个 QLineEdit我已经将图像设置为 QStackedWidget .现在我想更改 QLineEdit 中文本的字体颜色.怎么做? QLineEdit *line1 = new QLineE
我正在尝试编写一个简单的 Qt 程序,该程序在 QLineEdit 中获取文本,并在按下返回键时将其附加到 QTextEdit 对象中。 这是我的程序的代码: #include #include
我有一个QLineEdit,其中包含文本“搜索内容...”。 我希望当 QLineEdit 获得焦点或当光标进入文本内部时,文本被设置为空字符串。 [这有效:我没问题,我使用了 QLineEdit 的
如何在QMenu中将QLineEdit用作菜单项?有解决方案吗? 只是要做这样的事情(请看头像下方的编辑框): 最佳答案 您可以使用QWidgetAction来包含您的QLineEdit。它继承了QA
我引入了一个特定的自定义快捷键,允许从当前文本光标位置开始删除 QLineEdit 中接下来的 10 个字符。但我想让这个不可撤销。不幸的是,QLineEdit 不提供 QTextDocument 或
我有一个带有 QDoubleValidator 的 QLineEdit,调用 QDoubleValidator::setRange 不会验证 QLineEdit top() ) {
如何在 QLineEdit 上设置输入验证器以将其限制为有效的 IP 地址?即 x.x.x.x,其中 x 必须在 0 到 255 之间。并且 x 不能为空 最佳答案 您正在寻找QRegExp和 QVa
如果用户在 QLineEdit 中键入文本并离开 QLineEdit 输入字段,我想执行一些操作。 关于focusInEvent 的解释不多。我正在使用 Python 和 PySide2。但所有信息都
我正在使用 Qt 样式表创建一个自定义 QLineEdit,当它有焦点时,它周围有一个浅蓝色边框。这是样式表: this->setStyleSheet(" QLineEdit { "
我正在尝试制作一个带有行编辑和按钮的小部件。如果单击该按钮,它应该打开一个文件对话框,我可以在其中选择一个文件。文件名应该显示在行编辑中。这是我到目前为止得到的: #include "widget_o
我正在 python 上使用 PyQt5 制作一个登录 GUI 程序,在这个程序中我在此布局上创建了一个键盘。我的问题是,我无法使用我所做的键盘在 QLineEdit 上插入文本。我应该做什么来修复它
我想在某些条件下,不可能编辑 QLineEdit 小部件。理想情况下,它看起来像: QLE_On = QCheckBox("Non-editable?") generic = QLineEdit()
我正在从行编辑中获取用户输入并将其显示在 QMessageBox 上,但由于某种原因它不会显示。我想也许我根本没有从 QLineEdit 获取输入,但是当我尝试在终端上打印它时(顺便说一句,它仍然不会
是否可以在输入时使用 QValidator 设置 QLineEdit 的文本?如果是这样,有人可以插入如何实现这一目标的正确方向吗?谢谢。 最佳答案 您只需覆盖验证方法: from PyQt5 imp
我使用pyqt开发一个对话框,和一个LineEidt有些像下面这样,但我无法从 lineEdit1 获取任何内容: lineEdit1 = QtGui.QLineEdit() lineEdit1.se
我有一个(希望如此)简单的问题: 我创建了一个具有表单 (form.ui) 的新类。在这种形式中,我想构建某些 lineEdits。我想通过编码而不是拖放来做到这一点。我可以想到两种不同的方法来做到这
我想让 QLineEdit 看起来像 QLabel 如果它处于非事件状态则带有粗体文本,如果它像 QLineEdit 如果处于事件状态则具有正常粗细。在我的理解中,“事件”= 当显示文本光标并且用户可
QLineEdit 在 .clear() 或 .setText() 方法上触发信号。因此,每次使用这些方法来阻止 LineEdit 发出信号时,我都需要 .blockSignals(True) 然后是
我使用 QT Designer 绘制了一个 UI,但发现没有参数可让我将 QLineEdit 输入设置为大写。 在网上搜索了一些之后,我只看到了极少数满足我需要的结果,但是都是用 Qt 编码的。例如,
我是一名优秀的程序员,十分优秀!