一个查找框的教程,就是将第一章全部内容进行整合复习
public class 第一节_子类化QDialog extends QDialog{ /** * @param args */ QLineEdit 可写东西的行; QCheckBox 全词匹配选项; QCheckBox 上一个选项 ; QPushButton 查找按钮; public static void main(String[] args) { // TODO Auto-generated method stub QApplication.initialize(args); new 第一节_子类化QDialog().show(); QApplication.exec(); } public 第一节_子类化QDialog(){ QLabel 查找标签 = new QLabel(tr("查找(&c)")); //新建一个查找标签, &c表示标签有了快捷键 就是ALT+o,tr是Jambi中String的一种表现方式,以后当程序使用多语言显示的话会使用到它 可写东西的行 = new QLineEdit(); //新建一个编辑行 查找标签.setBuddy(可写东西的行); //意思就是按下标签的快捷键ALT+o,鼠标焦点会移动到"可写东西的行"的上面 全词匹配选项 = new QCheckBox(tr("全词匹配(&m)")); //新建一个选项按钮,方框的 上一个选项 = new QCheckBox(tr("查找上一个(&b)")); //新建一个选项按钮,方框的 查找按钮 = new QPushButton(tr("查找(&f)")); //新建一个查找的按钮 查找按钮.setDefault(true); //设置成按下回车建时就触发查找按钮事件 查找按钮.setEnabled(false); //设置查找按钮为灰显 QPushButton 关闭按钮 = new QPushButton(tr("关闭(&o)")); //新建一个关闭的按钮 可写东西的行.textChanged.connect(this,"改变查找按钮的灰显(String)"); //事件,表示当可写东西的行的文本发生变化时运行改变查找按钮的灰显(String)这个方法,这个事件到了参数,参数是根据具体事件来的,由于时间是属于文本变化,文本内容属于String类型,所以,表示当文本改变时,将可写东西的行中的文本当作参数传到改变查找按钮的灰显(String)这个方法中 查找按钮.clicked.connect(this, "查找事件()"); //事件,表示当点击查找按钮后运行查找事件()这个方法 关闭按钮.clicked.connect(this, "close()"); //事件,表示当点击关闭按钮后运行close()这个方法,close()方法是QT内部的方法,所以就不用自己建 QHBoxLayout 上左边的布局 = new QHBoxLayout(); //新建一个横向的布局 上左边的布局.addWidget(查找标签); //将查找标签放进去 上左边的布局.addWidget(可写东西的行); //将可写东西的行放进去 QVBoxLayout 左边的布局 = new QVBoxLayout();//新建一个竖向的布局 左边的布局.addLayout(上左边的布局); //将上左边的布局放到左边的布局第一个位置 左边的布局.addWidget(全词匹配选项); //将全词匹配选项放到左边的布局第二个位置 左边的布局.addWidget(上一个选项); //将上一个选项放到左边的布局第三个位置 QVBoxLayout 右边的布局 = new QVBoxLayout();//新建一个竖向的布局 右边的布局.addWidget(查找按钮); //将查找按钮放到右边的布局的第一个位置 右边的布局.addWidget(关闭按钮); //将关闭按钮放到右边的布局的第二个位置 右边的布局.addStretch(); //添加弹簧,为了填充上面两个按钮的空白处,为了布局不难看 QHBoxLayout 总体的布局 = new QHBoxLayout(); //新建一个横向的布局 总体的布局.addLayout(左边的布局); //将左边的布局放到总体的布局的第一个位置 总体的布局.addLayout(右边的布局); //将右边的布局放到总体的布局的第二个位置 setLayout(总体的布局); //当前窗体使用总体的布局来布局 setWindowTitle(tr("查找窗体")); //设置窗体标题 setFixedHeight(sizeHint().height()); //setFixedHeight表示让窗体有个固定的高度,sizeHint().height()表示返回一个理想的窗体部件的尺寸大小 } //对应上面的查找事件() void 查找事件(){ String text = 可写东西的行.text(); //得到行的内容,就是你填的 Qt.CaseSensitivity 类型 = 全词匹配选项.isChecked() ? Qt.CaseSensitivity.CaseSensitive:Qt.CaseSensitivity.CaseSensitive;//公式就不说了,意思就是如果选了全词匹配选项,则根据全词匹配查找,否则不根据,问号后面两个表达式是QT内部的,只要知道意思就行了 if(上一个选项.isChecked()){ //如果被选中了 向上找(text,类型); //不解释 }else{ 向下找(text,类型);//不解释 } } //不解释 void 向上找(String text,Qt.CaseSensitivity 类型){ //书上说下一章再写 } //不解释 void 向下找(String text,Qt.CaseSensitivity 类型){ //书上说下一章再写 } void 改变查找按钮的灰显(String text){//不解释 查找按钮.setEnabled(!text.isEmpty()); //text.isEmpty()表示文本是不是为空,为空返回true,为空设置为false. } }
如图: