• 5695阅读
  • 7回复

紧急求助: 在线等仁兄解救!! [复制链接]

上一主题 下一主题
离线无心徘徊
 

只看楼主 倒序阅读 楼主  发表于: 2010-01-05
本人对QT知之甚少, 一些简单的问题都要靠朋友帮助了。 界面我只会用QT designer画, 然后用UIC自动生成代码。 但问题是自动生成的代码与平常大家自己写的代码不太一样, 举一个简单的例子, 有两个Dialog窗口, 一个primay, 一个minor, Primary中有一个Button, 发出Click()后, 就会调出minor窗口。 下面是自动生成的代码, 大侠就不要笑话了!
primary.h -->primary.ui

QT_BEGIN_NAMESPACE

class Ui_maindlg
{
public:
    QPushButton *loadbtn;

    void setupUi(QDialog *maindlg)
    {
    if (maindlg->objectName().isEmpty())
        maindlg->setObjectName(QString::fromUtf8("maindlg"));
    maindlg->resize(400, 300);
    loadbtn = new QPushButton(maindlg);
    loadbtn->setObjectName(QString::fromUtf8("loadbtn"));
    loadbtn->setGeometry(QRect(260, 240, 90, 28));

    retranslateUi(maindlg);
    QObject::connect(loadbtn, SIGNAL(clicked()), maindlg, SLOT(display())); display()是将要调出minor窗口的槽函数!

    QMetaObject::connectSlotsByName(maindlg);
    } // setupUi

    void retranslateUi(QDialog *maindlg)
    {
    maindlg->setWindowTitle(QApplication::translate("maindlg", "Dialog", 0, QApplication::UnicodeUTF8));
    loadbtn->setText(QApplication::translate("maindlg", "ok", 0, QApplication::UnicodeUTF8));
    Q_UNUSED(maindlg);
    } // retranslateUi

};

namespace Ui {
    class maindlg: public Ui_maindlg {};
} // namespace Ui

QT_END_NAMESPACE

这个是被调出的窗口,头文件!
minor.h -->minor.ui
/********************************************************************************
** Form generated from reading ui file 'minor.ui'
**
** Created: Tue Jan 5 09:48:48 2010
**      by: Qt User Interface Compiler version 4.4.0
**
** WARNING! All changes made in this file will be lost when recompiling ui file!
********************************************************************************/

#ifndef MINOR_H
#define MINOR_H

#include <QtCore/QVariant>
#include <QtGui/QAction>
#include <QtGui/QApplication>
#include <QtGui/QButtonGroup>
#include <QtGui/QDialog>

QT_BEGIN_NAMESPACE

class Ui_sencond
{
public:

    void setupUi(QDialog *sencond)
    {
    if (sencond->objectName().isEmpty())
        sencond->setObjectName(QString::fromUtf8("sencond"));
    sencond->resize(400, 300);

    retranslateUi(sencond);

    QMetaObject::connectSlotsByName(sencond);
    } // setupUi

    void retranslateUi(QDialog *sencond)
    {
    sencond->setWindowTitle(QApplication::translate("sencond", "Dialog", 0, QApplication::UnicodeUTF8));
    Q_UNUSED(sencond);
    } // retranslateUi

};

namespace Ui {
    class sencond: public Ui_sencond {};
} // namespace Ui

QT_END_NAMESPACE

#endif // MINOR_H

小弟我对C++也是知之皮毛, 所以请大家帮帮小弟,在哪里定义这个display()函数, 在哪里连接??
还有就是这个自动生成的头文件,有什么特别注意的地方?  
请大家多多吝教!!!
技术是知识的积累,艺术是知识的熟练!
离线dbzhang800

只看该作者 1楼 发表于: 2010-01-05
不妨打开你的 assistant,
自己看
Using a Designer UI File in Your Application
离线无心徘徊

只看该作者 2楼 发表于: 2010-01-05
已经看过了, 但按着它的方式加入, 可编译,但不能执行!
技术是知识的积累,艺术是知识的熟练!
离线benbenmajia

只看该作者 3楼 发表于: 2010-01-05
你的main函数呢?
安然.....
离线无心徘徊

只看该作者 4楼 发表于: 2010-01-05
main函数就是跟例子的一样:

int main(int argc, char* argv[])
{
     QApplication app(argc, argv);
    
     primary_ui  primary;
     QDialog *dlg = new QDialog;

     primary.setupUi(dlg);
     dlg->show();

     return app.exec();
}

void display(void)
{
  //这个槽函数 也是跟上面主函数功能一样的, 重新show 第二个窗口, minor窗口

   }

就是这个槽函数定义在哪里? 如何定义是我比较头疼的事, 我只对C了解, 对C++没下过功夫!
见笑了!
技术是知识的积累,艺术是知识的熟练!
离线benbenmajia

只看该作者 5楼 发表于: 2010-01-05
槽函数跟其他函数的声明是一样的,你这个函数是哪个调用的就在哪个类里面
安然.....
离线无心徘徊

只看该作者 6楼 发表于: 2010-01-06
就跟楼上,说的一样, 在哪里调用,在哪里定义; 但还是不行 老是说 Object::connect: No such slot MainWindow::serialSetupDlg
技术是知识的积累,艺术是知识的熟练!
离线benbenmajia

只看该作者 7楼 发表于: 2010-01-06
没定义?我没designer做过ui,不是很明白后面的
安然.....
快速回复
限100 字节
 
上一个 下一个