查找框dialog
package jqt; import io.qt.core.QObject; import io.qt.core.Qt; import io.qt.widgets.*; class FindDialog extends QDialog { public final Signal2<String, Qt.CaseSensitivity> findNext = new Signal2<>(); public final Signal2<String, Qt.CaseSensitivity> findPrevious = new Signal2<>(); private QLabel label; private QLineEdit lineEdit; private QCheckBox caseCheckBox, backwardCheckBox; private QPushButton findButton, closeButton; public FindDialog() { this(null); } public FindDialog(QWidget parent) { super(parent); label = new QLabel("内容"); lineEdit = new QLineEdit(); label.setBuddy(lineEdit); caseCheckBox = new QCheckBox("区分大小写(&C)"); backwardCheckBox = new QCheckBox("向上(&B)"); findButton = new QPushButton("查找(&S)"); findButton.setDefault(true);//设置为默认按钮,按下enter可点击 findButton.setEnabled(false); closeButton = new QPushButton("取消"); QObject.connect(lineEdit, "textChanged(String)", this, "EnableFindButton(String)"); QObject.connect(findButton.clicked,this::FindClicked); closeButton.clicked.connect(this::reject); QHBoxLayout topLeftLayout = new QHBoxLayout(); topLeftLayout.addWidget(label); topLeftLayout.addWidget(lineEdit); QVBoxLayout leftLayout = new QVBoxLayout(); leftLayout.addLayout(topLeftLayout); leftLayout.addWidget(caseCheckBox); leftLayout.addWidget(backwardCheckBox); QVBoxLayout rightLayout = new QVBoxLayout(); rightLayout.addWidget(findButton); rightLayout.addWidget(closeButton); rightLayout.addStretch(); QHBoxLayout mainLayout = new QHBoxLayout(); mainLayout.addLayout(leftLayout); mainLayout.addLayout(rightLayout); setLayout(mainLayout); setWindowTitle("搜索"); setFixedHeight(sizeHint().height()); } public void FindClicked(){ String text=lineEdit.text(); Qt.CaseSensitivity cs = caseCheckBox.isChecked()? Qt.CaseSensitivity.CaseSensitive : Qt.CaseSensitivity.CaseInsensitive; if (backwardCheckBox.isChecked()) findPrevious.emit(text,cs); else findNext.emit(text,cs); } public void EnableFindButton(String text){ findButton.setEnabled(!text.isEmpty()); } }
浙公网安备 33010602011771号