标签: qt4

在Qt应用程序中似乎无法识别插槽

我最近一直在努力学习C++和Qt4,但我遇到了绊脚石.

我有以下类和实现:

class Window : public QWidget
{
public:
    Window();

public slots:
    void run();

private:
    //...
};
Run Code Online (Sandbox Code Playgroud)

Window::Window()
{
    //...

    connect(runBtn,SIGNAL(clicked()),this,SLOT(run()));

    //...
}
Window::run()
{
    //...
}
Run Code Online (Sandbox Code Playgroud)

但是,当我尝试构建并运行它时,尽管它构建得很好,它会立即退出并显示消息

Object::connect: No such slot QWidget::run()
Run Code Online (Sandbox Code Playgroud)

除非我做错了什么,否则Qt似乎没有认识到这个问题 run()

有人可以帮忙吗?


更新:

代码现在是:

class Window : public QWidget
{
    Q_OBJECT
public:
    Window(QWidget *parent = 0);

public slots:
    void run();

private:
    //...
};
Run Code Online (Sandbox Code Playgroud)

Window::Window(QWidget *parent) : QWidget(parent)
{
    //...

    connect(runBtn,SIGNAL(clicked()),this,SLOT(run()));

    //...
}
Window::run()
{
    //...
}
Run Code Online (Sandbox Code Playgroud)

该程序仍"意外完成",但不再告诉我没有这样的事情 QWidget::run()

c++ qt qt4 signals-slots

0
推荐指数
1
解决办法
2759
查看次数

使用C++制作对象的QT基本存在疑问

int main (int argc, char* argv[]) 
{ 
    QApplication app(argc, argv); 
    QTextStream cout(stdout, QIODevice::WriteOnly);     

    // Declarations of variables
    int answer = 0; 

    do {
        // local variables to the loop:
        int factArg = 0;
        int fact(1);
        factArg = QInputDialog::getInteger(0, "Factorial Calculator",
            "Factorial of:", 1);
        cout << "User entered: " << factArg << endl;
        int i=2;
        while (i <= factArg) {
            fact = fact * i;
            ++i;
        }
        QString response = QString("The factorial of %1 is %2.\n%3")
            .arg(factArg).arg(fact)  
            .arg("Do you want to …
Run Code Online (Sandbox Code Playgroud)

c++ qt4

0
推荐指数
1
解决办法
126
查看次数

将Qt UI代码移到单独的类中

我刚开始用Qt.尽管今天晚上花了一些时间,但我仍在努力将我的UI设置代码移出main它自己的类.

#include <QtGui>

int main(int argc, char *argv[]) {

    QApplication app(argc, argv);

    QWidget *window = new QWidget;
    QLabel *hw = new QLabel(QObject::tr("Hello World!"));

    QHBoxLayout *layout = new QHBoxLayout;
    layout->addWidget(hw);
    window->setLayout(layout);
    window->show();

    return app.exec();

}
Run Code Online (Sandbox Code Playgroud)

我已经尝试创建自己的类并传递window给它但遇到编译错误.

main.cpp中:

#include <QtGui>
#include "hworld.h"

int main(int argc, char *argv[]) {

    QApplication app(argc, argv);

    QDialog *hWorld = new hWorld;
    hWorld->show();

    return app.exec();

}
Run Code Online (Sandbox Code Playgroud)

hworld.h:

#ifndef HWORLD_H
#define HWORLD_H

#include <QtGui>

class hWorld : public QDialog {

    Q_OBJECT

public:
    hWorld(QWidget *parent = …
Run Code Online (Sandbox Code Playgroud)

c++ user-interface qt qt4

0
推荐指数
1
解决办法
1236
查看次数

未声明'QSqlDatabase'

我很擅长使用QT4.我试图在已经运行的应用程序中使用sql.但是,当我尝试编译时,我收到此错误:"'QSqlDatabase'未在此范围内声明."

这是相关代码:

#include <QtSql>
QSqlDatabase db = QSqlDatabase::addDatabase("QMYSQL");

 db.setHostName("bigblue");
 db.setDatabaseName("flightdb");
 db.setUserName("acarlson");
 db.setPassword("1uTbSbAs");
 bool ok = db.open();
Run Code Online (Sandbox Code Playgroud)

我已将QT + = sql添加到我的.pro文件中.

从上面复制了上面的代码:http://qt.nokia.com/doc/4.5/qtsql.html

知道我做错了什么吗?

sql qt4

0
推荐指数
1
解决办法
5083
查看次数

Qt moc_包含文件问题

我正在尝试编译http://doc.trolltech.com/4.4/mainwindows-application.html上的基本教程程序并遇到问题.

按照教程程序的方式执行操作会产生编译错误:

In file included from debug\moc_mainwindow.cpp:10:
debug\../mainwindow.h:2: error: expected class-name before '{' token
debug\../mainwindow.h:5: error: ISO C++ forbids declaration of `Q_OBJECT' with no type
Run Code Online (Sandbox Code Playgroud)

问题是需要

#include <QtGui>
Run Code Online (Sandbox Code Playgroud)

教程程序将它放在mainwindow.cpp中,这是理想的方法,但它不会被复制到moc文件中.

如果我将它放入mainwindow.h中,一切正常,但在每个头文件中执行此操作都是不优雅的,并且一旦程序变大就会延长编译时间.

自教程编写以来,这是否发生了变化?(我正在使用最新的Qt 4.5.3,Windows SDK安装,从命令行编译.)我错过了什么,或者是否有任何已知的修复此问题?

c++ qt qt4

0
推荐指数
1
解决办法
822
查看次数

Qt应用程序定制

如何让Qt应用程序看起来像Adobe Lightroom风格?

是皮肤还是css风格?

或者也许在Lightroom中使用了其他一些UI框架?

我想创建一些带有"视频时间轴"自定义小部件的表单,如Adobe Flash和Lightroom风格,但我不确定从什么开始,尤其是"时间线小部件".

qt4

0
推荐指数
1
解决办法
609
查看次数

setCentralWidget()导致QMainWindow崩溃..为什么?

MainWindow::MainWindow(QWidget *parent) : QMainWindow(parent), ui(new Ui::MainWindow)
{
    this->setupUi(this);
    this->setupActions();
    this->setWindowTitle(tr("CuteEdit"));
    label = new QLabel(tr("No Open Files"));
    this->setCentralWidget(label);
    label->setAlignment(Qt::AlignCenter);
}
Run Code Online (Sandbox Code Playgroud)

通过上面的代码,我得到了一个这样GUI(它是整个屏幕的截图,只观察电子书页面中间显示的窗口).(我使用过QT Designer)

现在,我希望用户选择文件 - >打开..出现一个对话框,文件被选中..它的内容将显示在*textEdit小部件中..功能就在下面..

void MainWindow::loadFile()
{
    QString filename = QFileDialog::getOpenFileName(this);
    QFile file(filename);
    if (file.open(QIODevice::ReadOnly|QIODevice::Text))
    {
        label->hide();
        textEdit->setPlainText(file.readAll());
        mFilePath = filename;
        QMainWindow::statusBar()->showMessage(tr("File successfully loaded."), 3000);
    }
}
Run Code Online (Sandbox Code Playgroud)

窗口在行崩溃: -

textEdit-> setPlainText(file.readAll());

但如果我评论这条线: -

这 - > setCentralWidget(标签);

我的意思是我删除标签作为中央小部件,程序按预期运行..为什么?

而且,我不清楚CentralWidget的概念.请指导.

c++ user-interface qt qt4

0
推荐指数
1
解决办法
7700
查看次数

QProgressbar和QNetworkReply发出信号

我正在使用Qt Framework用C++编写应用程序.它应该通过http下载文件,并使用QProgressbar显示下载进度 - 但我没有让这部分工作!

示例代码:

QProgressBar* pbar = new QProgressBar();
//calls the website and returns the QNetworkReply*
QNetworkReply* downloader = Downloader->getFile(); 

connect(downloader, SIGNAL(downloadProgress(qint64,qint64)), pbar, SLOT(setValue(int)));
Run Code Online (Sandbox Code Playgroud)

如果我运行我的代码,会发生以下错误:

QObject::connect: Incompatible sender/receiver arguments
QNetworkReplyImpl::downloadProgress(qint64,qint64) --> QProgressBar::setValue(int)
Run Code Online (Sandbox Code Playgroud)

但是QNetworkReply的Qt文档说:

此信号适合连接到QProgressBar :: setValue()以更新提供用户反馈的QProgressBar.

我的代码出了什么问题,如何让它运行?我在Linux下运行Qt 4.5.3.

感谢您的帮助,对不起我的英语!

c++ networking qt qt4

0
推荐指数
1
解决办法
3434
查看次数

QList <QList <int >> myList之间是否存在性能差异; 和int**myList;?

我想知道使用int**比使用QList>或者它们是否非常相等更有效.我必须做很多计算,所以我可能想要更快

qt qt4

0
推荐指数
1
解决办法
934
查看次数

使用Qt4的简单菜单栏

我正在尝试用QT 4.6制作一个简单的GUI.我创建了一个代表菜单栏的separete类:

MenuBar::MenuBar()
{
    aboutAct = new QAction(tr("&About QT"), this);
    aboutAct->setStatusTip(tr("Show the application's About box"));
    connect(aboutAct, SIGNAL(triggered()), this, SLOT(about()));

    quitAct = new QAction(tr("&Quit"),this);
    quitAct->setStatusTip(tr("Exit to the program"));
    //connect(quitAct, SIGNAL(triggered()), &QApp, SLOT(quit()));

    menuFile = new QMenu("File");
    menuFile->addAction(quitAct);

    menuLinks = new QMenu("Links");

    menuAbout = new QMenu("Info");
    menuAbout->addAction(aboutAct);


    addMenu(menuFile);
    addMenu(menuLinks);
    addMenu(menuAbout);
}
Run Code Online (Sandbox Code Playgroud)

我无法将quitAct的信号与主应用程序的退出槽连接,因为它在MenuBar类中是不可见的.

//connect(quitAct, SIGNAL(triggered()), &QApp, SLOT(quit()));
Run Code Online (Sandbox Code Playgroud)

我该怎么做?

c++ qt qt4

0
推荐指数
1
解决办法
3213
查看次数

标签 统计

qt4 ×10

c++ ×7

qt ×7

user-interface ×2

networking ×1

signals-slots ×1

sql ×1