zzhcpp 发表于 2007-2-20 19:08:18

QT的槽搞不定了,帮忙啊

#include <QApplication>
#include <QPushButton>
#include <QVBoxLayout>
#include <QWidget>
#include <QLineEdit>
#include <QtSql>
#include <QString>

class shiyan : public QWidget
{
QPushButton *charu;
QPushButton *chaxun;
QLineEdit *bianji;
QSqlDatabase db;
QSqlQuery query;
public:
   shiyan(QWidget *parent = 0);
public slots:
   void charuzhi(void);
void huoquzhi(void);
};

shiyan::shiyan(QWidget *parent)
   : QWidget(parent)
{
   charu = new QPushButton("charu");
chaxun = new QPushButton("chaxun");
bianji = new QLineEdit();

   QVBoxLayout *layout = new QVBoxLayout;
   layout->addWidget(bianji);
   layout->addWidget(charu);
   layout->addWidget(chaxun);
   setLayout(layout);

db = QSqlDatabase::addDatabase("QSQLITE");
   db.setDatabaseName("zzh");
          db.open();

connect(charu, SIGNAL(clicked()),bianji, SLOT(charuzhi()));
connect(chaxun, SIGNAL(clicked()),bianji, SLOT(huoquzhi()));
   


}


void shiyan::charuzhi(void)
{
QString zhi = bianji->text();
query.prepare("insert into biao values(?)");
query.addBindValue(zhi);
}
void shiyan::huoquzhi(void)
{
query.exec("SELECT a FROM biao");
while (query.next()) {
         QString name = query.value(0).toString();
         bianji->setText(name);
         
   }
}
int main(int argc, char *argv[])
{
   QApplication app(argc, argv);
   shiyan widget;

   widget.show();
   return app.exec();
}

输入信息后,一个槽将信息存在数据库里,另一个槽是在数据库里读取信息并显示。

chwoozy 发表于 2007-2-20 22:54:16

有什么出错提示信息?

SCerZZ 发表于 2007-2-21 00:50:48


class shiyan : public QWidget
{
    Q_OBJECT
QPushButton *charu;
QPushButton *chaxun;
....

注意在需要在自己类里边定义槽的时候,类必须在最前面加 Q_OBJECT
不然槽不起作用,估计楼主没有仔细看文档,在文档里边有说明的

zzhcpp 发表于 2007-2-21 09:51:12

程序的错误提示是:没有找到SLOT(charuzhi())和SLOT(huoquzhi()),所以我觉得是信号和槽有错误。好像连接不上

zzhcpp 发表于 2007-2-25 14:27:59

已搞定。

irons 发表于 2007-3-14 23:17:38

一直没多长时间搞qt````之前只看了点```
现在看到朋友这代码```真像java```除开某些地方。。。。
页: [1]
查看完整版本: QT的槽搞不定了,帮忙啊