crossplatform.ru

Здравствуйте, гость ( Вход | Регистрация )

acen83
  опции профиля:
сообщение 11.2.2008, 21:33
Сообщение #1


Студент
*

Группа: Участник
Сообщений: 23
Регистрация: 11.2.2008
Пользователь №: 91

Спасибо сказали: 0 раз(а)




Репутация:   0  


Господа! Срочное дело, помогите аццкому нубу!
Прочитал кучу самоучителей и справочников, рассмотрел много примеров, и теперь в голове каша :unsure:

Есть следущая функция в сгенерированном файле ui_file.h (из file.ui):
CODE
QTextBrowser *textBrowser;
QObject::connect(pushButton, SIGNAL(clicked()), textBrowser, SLOT(update()));


Задача такая: есть своя функция, например
CODE

string xren()
{
string x="it's work";
return x;
}


Нужно чтобы при нажатии pushButton, в textBrowser вывелся x.
Насколько я понял нужно создать наследника QTextBrowser и дописать ему слот, меняющий содержимое textBrowser на значение из xren().
Вот только как это сделать :unsure:

Сообщение отредактировал acen83 - 11.2.2008, 22:02
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
2 страниц V   1 2 >  
Начать новую тему
Ответов (1 - 9)
Багира
  опции профиля:
сообщение 11.2.2008, 22:55
Сообщение #2


Злоба_дня
***

Группа: Администратор
Сообщений: 314
Регистрация: 9.10.2007
Из: Москва
Пользователь №: 2

Спасибо сказали: 16 раз(а)




Репутация:   4  


использование Сигналов без Слотов - это подойдет в качестве примера?
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
acen83
  опции профиля:
сообщение 11.2.2008, 23:54
Сообщение #3


Студент
*

Группа: Участник
Сообщений: 23
Регистрация: 11.2.2008
Пользователь №: 91

Спасибо сказали: 0 раз(а)




Репутация:   0  


Цитата(Багира @ 11.2.2008, 22:55) *
использование Сигналов без Слотов - это подойдет в качестве примера?


Вроде не подходит, т.к. это заглушка для выполнения "виджет - функция", а мне надо "виджет - функция - виджет"

Написал потомка, но без макроса "Q_OBJECT" не видно моей функции (xren), а с ним компил ругается на отсутствие какого-то "v_table" когда пытаешься создать экземпляр.
ХЕЛП! Ведь такая простая задачка - написать свой слот!

CODE
class my_browser: public QTextBrowser
{
Q_OBJECT

public:
my_browser(QDialog* parent):QTextBrowser(parent){};

public slots:
void xren(){QMessageBox::warning( 0, "123", "123");};
};


Сообщение отредактировал Багира - 3.6.2017, 0:08
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
trdm
  опции профиля:
сообщение 12.2.2008, 8:58
Сообщение #4


Дмитрий Трошин
****

Группа: Участник
Сообщений: 575
Регистрация: 12.1.2008
Пользователь №: 68

Спасибо сказали: 21 раз(а)




Репутация:   6  


Цитата(acen83 @ 11.2.2008, 23:54) *
а с ним компил ругается на отсутствие какого-то "v_table"

Это клиника. Учите С++. Раздел классы, подраздел виртуальные функции.

Сообщение отредактировал trdm - 12.2.2008, 9:09
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
ViGOur
  опции профиля:
сообщение 12.2.2008, 9:05
Сообщение #5


Мастер
******

Группа: Модератор
Сообщений: 3296
Регистрация: 9.10.2007
Из: Москва
Пользователь №: 4

Спасибо сказали: 231 раз(а)




Репутация:   40  


Вот пример:
window.h
#ifndef WINDOW_H
#define WINDOW_H

#include <QWidget>
class QTextBrowser;

class QLabel;

class Window : public QWidget
{
    Q_OBJECT
protected:
    QTextBrowser *m_pTextBrowser;

public:
    Window();

public slots:
    void setTextInBrowser();
};

#endif

window.cpp
#include <QtGui>

#include "borderlayout.h"
#include "window.h"

QString xren()
{
    QString x="it's work";
    return x;
}

Window::Window()
{
    m_pTextBrowser = new QTextBrowser;
    m_pTextBrowser->setPlainText( tr("Simple Text"));

    QPushButton *pBtn = new QPushButton();
    pBtn->setText( "Clicked");

    QObject::connect( pBtn, SIGNAL(clicked()), this, SLOT( setTextInBrowser()));

    BorderLayout *layout = new BorderLayout;
    layout->addWidget( m_pTextBrowser, BorderLayout::Center);
    layout->addWidget( pBtn, BorderLayout::East);
    setLayout(layout);

    setWindowTitle( tr("Border Layout"));
}

void Window::setTextInBrowser()
{
    m_pTextBrowser->setPlainText( tr("%1").arg( xren()));
}

main.cpp
#include <QApplication>

#include "window.h"

int main(int argc, char *argv[])
{
    QApplication app(argc, argv);
    Window window;
    window.show();
    return app.exec();
}
Если что-то не понятно, спрашивай. ;)

Сообщение отредактировал ViGOur - 12.2.2008, 9:11
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
trdm
  опции профиля:
сообщение 12.2.2008, 9:08
Сообщение #6


Дмитрий Трошин
****

Группа: Участник
Сообщений: 575
Регистрация: 12.1.2008
Пользователь №: 68

Спасибо сказали: 21 раз(а)




Репутация:   6  


Цитата(ViGOur @ 12.2.2008, 9:05) *
BorderLayout *layout = new BorderLayout;

Боюсь что с этим просто не соберет.
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
ViGOur
  опции профиля:
сообщение 12.2.2008, 9:10
Сообщение #7


Мастер
******

Группа: Модератор
Сообщений: 3296
Регистрация: 9.10.2007
Из: Москва
Пользователь №: 4

Спасибо сказали: 231 раз(а)




Репутация:   40  


а чего там такого?
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
acen83
  опции профиля:
сообщение 12.2.2008, 9:24
Сообщение #8


Студент
*

Группа: Участник
Сообщений: 23
Регистрация: 11.2.2008
Пользователь №: 91

Спасибо сказали: 0 раз(а)




Репутация:   0  


Цитата
Если что-то не понятно, спрашивай. ;)


Спасибо огромное!! На вид все понятно, буду днем пробовать!
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
trdm
  опции профиля:
сообщение 12.2.2008, 9:59
Сообщение #9


Дмитрий Трошин
****

Группа: Участник
Сообщений: 575
Регистрация: 12.1.2008
Пользователь №: 68

Спасибо сказали: 21 раз(а)




Репутация:   6  


Цитата(ViGOur @ 12.2.2008, 9:10) *
а чего там такого?

ну дык, этот лайот же не стандартный кутешный, а из примера. хотя какая нифиг разница, захочет докопается.
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
ViGOur
  опции профиля:
сообщение 12.2.2008, 10:12
Сообщение #10


Мастер
******

Группа: Модератор
Сообщений: 3296
Регистрация: 9.10.2007
Из: Москва
Пользователь №: 4

Спасибо сказали: 231 раз(а)




Репутация:   40  


Понял... :)

Его можно найти в %QTDIR%\examples\layouts\borderlayout.
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение

2 страниц V   1 2 >
Быстрый ответОтветить в данную темуНачать новую тему
Теги
Нет тегов для показа


1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0


RSS Рейтинг@Mail.ru Текстовая версия Сейчас: 3.6.2025, 20:22