Russian Qt Forum

Qt => Вопросы новичков => Тема начата: ixtorio от Апрель 06, 2011, 23:17



Название: Непоняточка с кнопкой
Отправлено: ixtorio от Апрель 06, 2011, 23:17
почему когда я обращаюсь к объекту Qt пишет мне 'sendBtn' was not declared in this scope.
я ведь переименовал ее в окне объектов


Название: Re: Непоняточка с кнопкой
Отправлено: Fat-Zer от Апрель 06, 2011, 23:30
код приведите...


Название: Re: Непоняточка с кнопкой
Отправлено: ixtorio от Апрель 06, 2011, 23:54
Код
C++ (Qt)
#include "mainwindow.h"
#include "ui_mainwindow.h"
 
MainWindow::MainWindow(QWidget *parent) :
   QMainWindow(parent),
   ui(new Ui::MainWindow)
{
   ui->setupUi(this);
}
 
MainWindow::~MainWindow()
{
   delete ui;
}
 
void MainWindow::on_sendButton_clicked()
{
   sendButton->text="Tipa knopochka";
}
 


Название: Re: Непоняточка с кнопкой
Отправлено: Fat-Zer от Апрель 07, 2011, 00:01
по меньшей мере
Код
C++ (Qt)
   sendButton->setText(tr("Tipa knopochka"));
ЗЫ: а вообще сигналы и слоты лучше соеденять вручную.


Название: Re: Непоняточка с кнопкой
Отправлено: ixtorio от Апрель 07, 2011, 00:20
всеравно таже ошибка , вот новый код
Код
C++ (Qt)
 
#include "mainwindow.h"
#include "ui_mainwindow.h"
 
MainWindow::MainWindow(QWidget *parent) :
   QMainWindow(parent),
   ui(new Ui::MainWindow)
{
   ui->setupUi(this);
}
 
MainWindow::~MainWindow()
{
   delete ui;
}
 
void MainWindow::on_sendButton_clicked()
{
   sendButton->setText(tr("Tipa knopochka"));
}
 


Название: Re: Непоняточка с кнопкой
Отправлено: madRoger от Апрель 07, 2011, 00:22
Цитировать
'sendBtn' was not declared in this scope.

Кнопку не видно, потому-что она принадлежит к ui.

Обращаться к ней нужно соответственно ui->sendBtn....


Название: Re: Непоняточка с кнопкой
Отправлено: ixtorio от Апрель 07, 2011, 00:23
теперь другая ошибка :: error: collect2: ld returned 1 exit status


Название: Re: Непоняточка с кнопкой
Отправлено: madRoger от Апрель 07, 2011, 00:31
Такое бывает, когда уже запущена копия программы... Посмотри в процессах, если есть - убей. Если нет, надо смотреть весь код.


Название: Re: Непоняточка с кнопкой
Отправлено: ixtorio от Апрель 07, 2011, 00:43
вот весь код

mainwindow.cpp:
Код
C++ (Qt)
#include "mainwindow.h"
#include "ui_mainwindow.h"
 
MainWindow::MainWindow(QWidget *parent) :
   QMainWindow(parent),
   ui(new Ui::MainWindow)
{
   ui->setupUi(this);
}
 
MainWindow::~MainWindow()
{
   delete ui;
}
 
void MainWindow::on_sendButton_clicked()
{
   ui->sendButton->setText(tr("Tipa knopochka"));
}
 

main.cpp:
Код
C++ (Qt)
#include <QtGui/QApplication>
#include "mainwindow.h"
 
int main(int argc, char *argv[])
{
   QApplication a(argc, argv);
   MainWindow w;
   w.show();
 
   return a.exec();
}
 


Название: Re: Непоняточка с кнопкой
Отправлено: Fat-Zer от Апрель 07, 2011, 00:50
хедер было бы интересней посмотреть, чем main.cpp.
А вообще лучше выложите весь проект, ибо ошибка скорей всего где-то в форме...
Ещё надо было бы очистить всё... часто бывает, что проблемма в старых объектниках


Название: Re: Непоняточка с кнопкой
Отправлено: madRoger от Апрель 07, 2011, 00:55
У меня все ОК собралось и пашет.

В mainwindow.h естесссно присутствует:

Код:
private slots:
void on_sendButton_clicked();


Название: Re: Непоняточка с кнопкой
Отправлено: ixtorio от Апрель 07, 2011, 01:00
проблема действительно оказалась в хидере, там остался кусок от старого названия кнопки и получилось что он ссылался на несуществующую функцию в коде...всем спасибо , всё работает...

еще один вопросик,как в текстовое поле добавить текст, если там уже имеется ,тоесть не перезаписать ,а присоеденить какбы ,к тому что был...


Название: Re: Непоняточка с кнопкой
Отправлено: madRoger от Апрель 07, 2011, 01:06
QTextEdit::append

UPD: Так же подойдет QTextEdit::insertPlainText


Название: Re: Непоняточка с кнопкой
Отправлено: ixtorio от Апрель 07, 2011, 01:39
что нужно вписать ui->textEdit->append(!!!!!!!!!!!СЮДА!!!!!!!); чтоб прочитать текст из другого такого поля , к примеру чтото вроде ui->textEdit2->text .

смотрел здесь http://wiki.crossplatform.ru/index.php/Qt:Документация_4.3.2/qtextedit и ненашел ниче путёвого


Название: Re: Непоняточка с кнопкой
Отправлено: Fess от Апрель 07, 2011, 05:33
QTextEdit::toPlainText()
QTextEdit::toHtml()
и прочитайте уже документацию: http://doc.qt.nokia.com/4.7/qtextedit.html


Название: Re: Непоняточка с кнопкой
Отправлено: ixtorio от Апрель 07, 2011, 08:13
еще вопрос ,мне надо чтоб по нажатию на кнопку , вываливался месадж бокс,делаю так
Код
C++ (Qt)
#include <QMessageBox>
#include "mainwindow.h"
#include "ui_mainwindow.h"
 
 
MainWindow::MainWindow(QWidget *parent) :
   QMainWindow(parent),
   ui(new Ui::MainWindow)
{
   ui->setupUi(this);
}
 
MainWindow::~MainWindow()
{
   delete ui;
}
 
void MainWindow::on_sendBtn_clicked()
{
   QMessageBox msgBox;
   msgBox->setText("TEST");
   msgBox->exec();
}
 
, а он мне ошибку выдает вот такую
Код
C++ (Qt)
base operand of '->' has non-pointer type 'QMessageBox'
 
код взял отсюда из примера http://notesofprogrammer.blogspot.com/2010/03/messagebox-qt.html


Название: Re: Непоняточка с кнопкой
Отправлено: Hellraiser от Апрель 07, 2011, 08:17
А не смутило, что в во взятом коде нет "->", а есть "."?


Название: Re: Непоняточка с кнопкой
Отправлено: ixtorio от Апрель 07, 2011, 08:18
блин какойже я не внимательный=(,спасибо товарищь...


Название: Re: Непоняточка с кнопкой
Отправлено: Hellraiser от Апрель 07, 2011, 08:19
Это не невнимательность, это абсолютное незнание языка.


Название: Re: Непоняточка с кнопкой
Отправлено: ixtorio от Апрель 07, 2011, 08:45
не обессутьте но я только начинаю разбираться нормально в с++ и ооп...возникают вопросы.. а объяснения в книгах я не всегда понимаю...
вот например вопрос такой что такое Abcd в двух случаях
1 Abcd->text
2 Abcd.text

тоесть кем Abcd выступает в этих ролях и кем text ,объектом,классом,методом,структурой...совсем запутался я вовсех этих символизмах


Название: Re: Непоняточка с кнопкой
Отправлено: Пантер от Апрель 07, 2011, 09:06
1. Abcd - указатель на объект класса, созданного в куче.
2. Abcd - объект класса, созданного на стеке.

text - член класса.
В с++ класс = структура


Название: Re: Непоняточка с кнопкой
Отправлено: Hellraiser от Апрель 07, 2011, 09:07
Читаем слева-направо. Abcd, в первую очередь, переменная (для варианта 1 - указатель на переменную). Тип ее надо смотреть по объявлению. Можно предположить (судя по записи), что это объект класса (или структуры). Стрелка для указателя на объект, точка - для самого объекта. Используются для адресации к элементу объекта, т.е. данным или методам. Т.к. после "text" нет скобок, то это данные (переменная класса). В C/C++ все функции, даже не имеющие параметров, должны писаться со скобками после имени. text - переменная, text() - функция. Для изучения - Г. Шилдт С++. Руководство для начинающих. Г. Шилдт С++. Базовый курс. Б.Страуструп Язык программирования С++. Все это есть весьма приличного качества в сети.


Название: Re: Непоняточка с кнопкой
Отправлено: ixtorio от Апрель 07, 2011, 09:09
ок спасибо,качаю книги и опять начинаю погружаться=)


Название: Re: Непоняточка с кнопкой
Отправлено: Пантер от Апрель 07, 2011, 09:12
Шилдта не читал. Б.Страуструп автор классный, но для новичка будет тяжело (проверено на одногруппнике). Есть еще Лафоре, но качество книги (не помню точно название) было ужасное (множество очепяток). Тут где-то была прикрепленная темя со списком литературы, поищи.


Название: Re: Непоняточка с кнопкой
Отправлено: Fat-Zer от Апрель 07, 2011, 09:30
1. Abcd - указатель на объект класса, созданного в куче.
2. Abcd - объект класса, созданного на стеке.
только про то, где-что было создано надо поосторожней говорить... и первый может лажать на стеке и второй может быть ссылкой на то, что лежит в куче...

и ещё: первое может быть и объектом, для которого перегружен оператор->, так что тут есть много тонкостей...

ЗЫ: по литературе ещё Липмана можно, как большой толстый справочник


Название: Re: Непоняточка с кнопкой
Отправлено: Пантер от Апрель 07, 2011, 09:31
1. Abcd - указатель на объект класса, созданного в куче.
2. Abcd - объект класса, созданного на стеке.
только про то, где-что было создано надо поосторожней говорить... и первый может лажать на стеке и второй может быть ссылкой на то, что лежит в куче...

и ещё: первое может быть и объектом, для которого перегружен оператор->, так что тут есть много тонкостей...
Ну, это ты уже полез в дебри. :) Я же для новичка писал.