相关疑难解决方法(0)

QLineEdit - 焦点事件

我必须将焦点事件从某个QLineEditelement(ui->lineEdit)连接到方法focus().我怎样才能做到这一点?

c++ qt

12
推荐指数
1
解决办法
2万
查看次数

单击事件时清除 QLineEdit

我正在使用给定的代码,我希望用户在 QLineEdit 小部件中输入文本,按复制!按钮并查看输入的文本替换“N/A”标签。我的问题是:按照此过程,如何通过简单的鼠标单击清除 QLineEdit 小部件中输入的文本?

从我读到的(thisthisthis)来看,我似乎需要在扩展 QLineEdit 的新类中重新实现 focusInEvent()。我的问题是我的 GUI 代码是使用 pyuic5 从 Qt Designer 导入的,上面引用的示例似乎没有考虑到这一点。

这是我的代码:

from PyQt5.QtWidgets import *
import sys

import QLineEdit_test


class MainWindow(QMainWindow, QLineEdit_test.Ui_QLineEdit_test):

    def __init__(self, parent=None):
        super(MainWindow, self).__init__(parent)
        self.setupUi(self)

        self.copy_button.clicked.connect(self.copy_and_print)

    def copy_and_print(self):

        self.label.setText(self.lineEdit.text())


def main():

    app = QApplication(sys.argv)
    form = MainWindow()
    form.show()
    app.exec_()

if __name__ == "__main__":
    main()
Run Code Online (Sandbox Code Playgroud)

这是我转换后的 .ui 文件:

from PyQt5 import QtCore, QtGui, QtWidgets

class Ui_QLineEdit_test(object):
    def setupUi(self, QLineEdit_test):
        QLineEdit_test.setObjectName("QLineEdit_test")
        QLineEdit_test.resize(300, 200)
        QLineEdit_test.setMaximumSize(QtCore.QSize(300, 200))
        self.centralwidget = …
Run Code Online (Sandbox Code Playgroud)

python pyqt qt-designer python-3.x pyqt5

7
推荐指数
1
解决办法
2万
查看次数

如何知道QLineEdit是否得到了关注?

我希望能够知道QLineEdit它是否是一次点击.所以我想我应该重新实现以下功能(??):

void QLineEdit::focusInEvent ( QFocusEvent * e )   [virtual protected]
Run Code Online (Sandbox Code Playgroud)

我该怎么办?

另外,请告诉我如何使用focusInEvent()函数以了解QLineEdit myEdit;对象是否有焦点.

编辑:我写了以下功能:

bool LoginDialog::eventFilter(QObject *target, QEvent *event)
{
    if (target == m_passwordLineEdit)
    {
        if (event->type() == QEvent::FocusIn)
        {
            if(checkCapsLock())
            {
                QMessageBox::about(this,"Caps Lock", "Your caps lock is ON!");

            }
            return true;

        }
    }
    return QDialog::eventFilter(target, event);
}
Run Code Online (Sandbox Code Playgroud)

m_passwordLineEditLoginDialog类构造函数中注册如下:

m_passwordLineEdit->installEventFilter(this);
Run Code Online (Sandbox Code Playgroud)

它落入了MessageBox-es的无限循环中.请帮我解决这个问题.实际上我想用弹出窗口(不带a QMessageBox)来实现这个功能.是否可以满足QLabel这种需求?

c++ qt qlineedit

4
推荐指数
1
解决办法
2万
查看次数

QLineEdit焦点事件

我有两个小部件mainwindow123和二等.在我的MainWidget.cpp中有一个lineedit和button字段.最初我可以将焦点设置在行编辑上.但是在来自second.cpp Widget后,我无法将注意力集中在lineedit上.请帮帮我..哪个地方我犯了错误?提前致谢.

这是我的代码MainWidget.cpp

MainWidget::MainWidget(QWidget *parent) :
        QWidget(parent),
        ui(new Ui::MainWidget)
    {
        ui->setupUi(this);
        s = new second();
        connect(ui->pushButton, SIGNAL(clicked()),this,SLOT(callSecond()));

    }

    MainWidget::~MainWidget()
    {
        delete ui;
    }
    void MainWidget::callSecond()
    {
       s->show();

     }
Run Code Online (Sandbox Code Playgroud)

second.cpp

second::second(QWidget *parent) :
    QWidget(parent)
{
    QPushButton *first = new QPushButton("first");
    first->setStyleSheet(
         "background-color:black;"

    );
    QGridLayout *d = new QGridLayout();

    d->addWidget(frist,0,0,1,1);
    setLayout(d);
    connect(first,SIGNAL(clicked()),this,SLOT(first()));
}

void second:: first()
{
    this->hide();
}
Run Code Online (Sandbox Code Playgroud)

qt qt4

0
推荐指数
1
解决办法
6147
查看次数

标签 统计

qt ×3

c++ ×2

pyqt ×1

pyqt5 ×1

python ×1

python-3.x ×1

qlineedit ×1

qt-designer ×1

qt4 ×1