这便是了,功能是选中checkBox时,lineEdit里面写上checked,没选中时,写上unchecked,初始化为unchecked。囧~
昨天晚上搞这个程序一直是在运行时出错,我也不知道错哪里了。今天在师兄的帮助下发现错误了。
先上原程序
mianframe.h(创建工程的时候打错了,囧)
#ifndef MIANFRAME_H #define MIANFRAME_H #include <QtGui/QMainWindow> #include "ui_mianframe.h" class mianframe : public QMainWindow { Q_OBJECT public: mianframe(QWidget *parent = 0, Qt::WFlags flags = 0); ~mianframe(); private slots: void changetext(int state); private: Ui::mianframeClass ui; }; #endif // MIANFRAME_H
mianframe.cpp
#include <QtGui> #include "mianframe.h" mianframe::mianframe(QWidget *parent, Qt::WFlags flags) : QMainWindow(parent, flags) { ui.setupUi(this); ui.lineEdit->setText("unchecked"); connect(ui.checkBox,SIGNAL(stateChanged(int)),this,SLOT(changetext(int))); } void mianframe::changetext(int state) { if(state==2) ui.lineEdit->setText("checked"); else if(state==0) ui.lineEdit->setText("unchecked"); } mianframe::~mianframe() { }
main.cpp
#include "mianframe.h" #include <QtGui/QApplication> int main(int argc, char *argv[]) { QApplication a(argc, argv); mianframe w; w.show(); return a.exec(); }
以下是心得:
1、根据Qt教程,在mianframe类后要加上public Ui::mianframeClass,为了在自己建的signals和slots函数中可以用到ui里面的变量
但是仔细看发现在用Qt designer建好界面的时候,在mianframe类中有一句话:private: Ui::mianframeClass ui; 有这句话我自定义的函数可以用ui.***的形式访问变量了。而private与public应该矛盾了吧...囧
2、connect函数中SINGAL和SLOT中的函数其参数只能写变量类型,不能写变量名,不然connect无效...
前车之鉴啊!