Форум программистов, компьютерный форум, киберфорум
C++ Qt
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.67/3: Рейтинг темы: голосов - 3, средняя оценка - 4.67
4 / 4 / 1
Регистрация: 24.10.2012
Сообщений: 57
1

Насдедование

08.03.2013, 16:54. Показов 615. Ответов 7
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Есть файлы:
mainwindow.h
C++ (Qt)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
#ifndef MAINWINDOW_H
#define MAINWINDOW_H
 
#include <QMainWindow>
 
namespace Ui 
{
    class MainWindow;
}
 
class MainWindow : public QMainWindow
{
    Q_OBJECT
 
public:
    explicit MainWindow(QWidget *parent = 0);
    ~MainWindow();
 
private slots:
    void on_javaPathButton_clicked();
 
private:
    Ui::MainWindow *ui;
};
 
#endif // MAINWINDOW_H
mainwindow.cpp
C++ (Qt)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
#include "mainwindow.h"
#include "ui_mainwindow.h"
#include "settings.h"
 
MainWindow::MainWindow(QWidget *parent) : QMainWindow(parent), ui(new Ui::MainWindow)
{
    ui->setupUi(this);
}
 
MainWindow::~MainWindow()
{
    delete ui;
}
 
void MainWindow::on_javaPathButton_clicked()
{
    settings Settings;
    ui->javaPathLine->setText(Settings.setJavaPath());
}
settings.h
C++ (Qt)
1
2
3
4
5
6
7
8
9
10
11
12
#ifndef SETTINGS_H
#define SETTINGS_H
 
#include <QFileDialog>
 
class settings
{
    public:
        QString setJavaPath();
};
 
#endif // SETTINGS_H
settings.cpp
C++ (Qt)
1
2
3
4
5
6
7
#include "settings.h"
 
QString settings::setJavaPath()
{
    QString javaPath = QFileDialog::getOpenFileName(this ,"Open File", "C:/", "java.exe");
    return (javaPath);
}
В итоге получаю ошибку: no matching function for call to 'QFileDialog::getOpenFileName(settings* const, const char [10], const char [4], const char [9])'
Я так понимаю проблема с наследованием, но я не знаю, как это исправить.
Прекрасно понимаю, что это элементарные вещи, но всё же прошу показать, на моем примере, как исправить положение.
Пните в нужную сторону.
Спасибо!
0
Эксперт С++
1936 / 1048 / 109
Регистрация: 29.03.2010
Сообщений: 3,167
08.03.2013, 16:56 2
class settings
не является QObject о чем вам тонко намекает компилятор
0
4 / 4 / 1
Регистрация: 24.10.2012
Сообщений: 57
08.03.2013, 17:08  [ТС] 3
Цитата Сообщение от l_a_m Посмотреть сообщение
class settings
не является QObject о чем вам тонко намекает компилятор
Только что попробовал вставить Q_OBJECT в начало класса, ни чего не изменилось.

Весь выхлоп:
Кликните здесь для просмотра всего текста
no matching function for call to 'QFileDialog::getOpenFileName(settings* const, const char [10], const char [4], const char [9])'
candidate is:
static QString QFileDialog::getOpenFileName(QWidget*, const QString&, const QString&, const QString&, QString*, QFileDialog::Options)
note: no known conversion for argument 1 from 'settings* const' to 'QWidget*'
0
35 / 35 / 1
Регистрация: 02.03.2012
Сообщений: 117
08.03.2013, 17:26 4
что непонятного?

C++ (Qt)
1
QString javaPath = QFileDialog::getOpenFileName(this ,"Open File", "C:/", "java.exe");
функция 1м параметром принимает указатель на QWidget, а Вы суете ему указатель на свой класс, который даже ниразу не связан с QWidget.
0
4 / 4 / 1
Регистрация: 24.10.2012
Сообщений: 57
08.03.2013, 17:45  [ТС] 5
Цитата Сообщение от kniferko Посмотреть сообщение
что непонятного?

C++ (Qt)
1
QString javaPath = QFileDialog::getOpenFileName(this ,"Open File", "C:/", "java.exe");
функция 1м параметром принимает указатель на QWidget, а Вы суете ему указатель на свой класс, который даже ниразу не связан с QWidget.
Ну дак и покажите, как исправить. И если не сложно, то укажите на литературу, где все это понятным языком написано.
Буду очень благодарен!
0
Диссидент
Эксперт C
27706 / 17322 / 3812
Регистрация: 24.12.2010
Сообщений: 38,979
08.03.2013, 18:03 6
AlexSMGr54, Поставьте первым параметром 0, да и дело с концом.
C++ (Qt)
1
QString javaPath = QFileDialog::getOpenFileName(0 ,"Open File", "C:/", "java.exe");
1
4 / 4 / 1
Регистрация: 24.10.2012
Сообщений: 57
08.03.2013, 18:20  [ТС] 7
Цитата Сообщение от Байт Посмотреть сообщение
AlexSMGr54, Поставьте первым параметром 0, да и дело с концом.
C++ (Qt)
1
QString javaPath = QFileDialog::getOpenFileName(0 ,"Open File", "C:/", "java.exe");
Спасибо, большое, помогло!
Не подскажите, что можно почитать, чтоб таких вопросов больше не было?
0
Эксперт С++
1936 / 1048 / 109
Регистрация: 29.03.2010
Сообщений: 3,167
11.03.2013, 10:49 8
http://doc.qt.digia.com/
1
11.03.2013, 10:49
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru