C++:在Qt中设计两个EditText同步滚动

最近刚刚接触Qt的编程,有个需求是需要两个EditText可以同步滚动,拖动其中一个滚动条时另一个也会滚动

先设计信号

    QScrollBar *QSB_left=ui->plainTextEdit_left->verticalScrollBar();
    QScrollBar *QSB_right=ui->plainTextEdit_right->verticalScrollBar();

    connect(QSB_left,SIGNAL(valueChanged(int)),this,SLOT(leftScroll()));
    //valueChanged()中要填int
    connect(QSB_right,SIGNAL(valueChanged(int)),this,SLOT(rightScroll()));

设计槽

private slots:

    void leftScroll();
    void rightScroll();

定义函数

void MainWindow::leftScroll()
{
    QScrollBar *QSB_left=ui->plainTextEdit_left->verticalScrollBar();
    QScrollBar *QSB_right=ui->plainTextEdit_right->verticalScrollBar();
    QSB_right->setValue(QSB_left->value());
}

void MainWindow::rightScroll()
{
    QScrollBar *QSB_left=ui->plainTextEdit_left->verticalScrollBar();
    QScrollBar *QSB_right=ui->plainTextEdit_right->verticalScrollBar();
    QSB_left->setValue(QSB_right->value());
}

实现效果:

QQ录屏20220425151056

在Android开发,如果你想要实现在两个`EditText`控件之间同步输入内容,你可以通过设置它们之间的监听事件来实现。通常的做法是在其一个`EditText`的内容改变时,更新另一个`EditText`的内容。以下是一个简单的步骤: 1. 首先,在布局文件关联这两个`EditText`控件,并给他们分别起个ID,比如`editText1`和`editText2`。 ```xml <EditText android:id="@+id/editText1" ...> </EditText> <EditText android:id="@+id/editText2" ...> </EditText> ``` 2. 在对应的Activity或Fragment的`onCreate()`或`onViewCreated()`方法,给这两个`EditText`添加ContentObserver,以便在文本变化时得到通知: ```java EditText editText1 = findViewById(R.id.editText1); EditText editText2 = findViewById(R.id.editText2); // 创建ContentObserver实例 ContentObserver contentObserver = new ContentObserver(new Handler()) { @Override public void onChange(boolean selfChange) { // 当内容改变时,同步另一控件的值 String text1 = editText1.getText().toString(); editText2.setText(text1); // 或者使用setText()的第二个版本(防止直接赋值导致不必要的变更) } }; // 注册观察 editText1.addTextChangedListener(new TextWatcher() { @Override public void beforeTextChanged(CharSequence s, int start, int count, int after) {} @Override public void onTextChanged(CharSequence s, int start, int before, int count) {} @Override public void afterTextChanged(Editable s) { // 发送内容改变的信号 contentObserver.onChange(true); } }); // 对于EditText2,同样注册监听并同步editText1 ... ``` 这样,当你在一个`EditText`输入内容时,另一个`EditText`会实时更新显示同样的内容。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值