KDevelop

IDE, VCS и прочее

Модератор: Модераторы разделов

Аватара пользователя
ezheg
Сообщения: 258
Статус: джидай 3-го уровня
ОС: Mac OS X

KDevelop

Сообщение ezheg »

Да как пользоваться этим?
Если создаю новый проект на С++,выбираю Simple KDE Application,все прекрасно компилируется,появляется хелло мир,мать его(сорри.)
Как там создать там что-то свое и нормально скомпилировать?Например если в этом Hello world все стереть и написать стандартный пример,типа

Код: Выделить всё

#include <qapplication.h>
#include <qpushbutton.h>

int main(int argc, char **argv)
{
    QApplication app1(argc, argv);

    QPushButton button1("Hello world!",0);
    button1.resize(300,30);

    app1.setMainWidget(&button1);
    button1.show();
    return app1.exec();
}

то если выбрать Сборка -> Собрать проект,начинает компилиться,потом выдает кучу ошибок.А если просто выбрать Сборка -> скомпилировать файл,то он вроде компилится,но потом запустить его нельзя

Код: Выделить всё

/home/piton/hello1/src/hello1.cpp:5: multiple definition of `main'
*main.o(.text+0x0):/home/piton/hello1/src/main.cpp:39: first defined here
*/home/piton/hello1/src/main.cpp:50: undefined reference to `hello1::hello1[in-charge]()'
*main.o(.text+0x147):/home/piton/hello1/src/main.cpp:59: undefined reference to `hello1::hello1[in-charge]()'
*hello1.moc.o(.gnu.linkonce.r._ZTV6hello1+0x24):/home/piton/hello1/debug/src/hello1.moc.cpp:34: undefined reference to `hello1::~hello1 [in-charge]()'
*hello1.moc.o(.gnu.linkonce.r._ZTV6hello1+0x28):/home/piton/hello1/debug/src/hello1.moc.cpp:34: undefined reference to `hello1::~hello1 [in-charge deleting]()'

И вообще как там создать пустой проект под kde на c++?Там в дереве когда новый проект создаешь С++ -> kde -> куча всяких ненужных вещей типа компонентов для Noatun,а пустого проекта нет?
Спасибо сказали:
Аватара пользователя
Valerius
Бывший модератор
Сообщения: 1469
Статус: Отпетый КДЕ'шник

Re: KDevelop

Сообщение Valerius »

Судя по твоему примеру, тебе нужно нужно QApplication, тогда выбери QMake project.
(piton3000 @ Wednesday, 18 August 2004, 19:05) писал(а):И вообще как там создать пустой проект под kde на c++
Что значит пустой проект? Есть разные заготовки проектов.
Вот здесь лежат неплохие руководства -
http://women.kde.org/articles/tutorials/kd...3/ru/index.html
http://ts.kmc.ru/articles.php4?a=32
А про kdevelop.org ты наверное сам знаеш :)
Свобода есть тонкая полоска между диктатурой и анархией.

---------------------
Mandriva Linux PowerPack 2006 (Cooker-нутая) / KDE-3.5.1
Спасибо сказали:
Аватара пользователя
ezheg
Сообщения: 258
Статус: джидай 3-го уровня
ОС: Mac OS X

Re: KDevelop

Сообщение ezheg »

Там уже лежат полуготовые проекты и для каждого видимо запускается компилятор по-разному.
Например я хочу скомпилить приведенный выше пример.Если я выбираю QMake project то там есть Application и пара hello world.И что тогда я должен делать?Если выбрать например Application,стереть там кучу готового кода и вписать этот пример то до конца он тоже не будет компилиться.И вообще непонятно - зачем мне готовые примеры,если,например,я хочу с нуля начать?Я там такой возможности не вижу.Или это только я не вижу?
Спасибо сказали:
Аватара пользователя
oav
Бывший модератор
Сообщения: 296

Re: KDevelop

Сообщение oav »

я конечно не провидец, но все говорит о том, что удалив hello.cpp, hello.h где-то все равно подключается, а линковщик конечно тебя посылает ибо реализации нет. проверь "проект"
Спасибо сказали:
Аватара пользователя
Valerius
Бывший модератор
Сообщения: 1469
Статус: Отпетый КДЕ'шник

Re: KDevelop

Сообщение Valerius »

Попробовал собрать твой пример твоим же методом - всё ОК!
QMake project -> Hello word programm. Создаётся один *.cpp - файл. удаляю содержимое нафик (да там собственно почти ничего и нет) и вставляю твой пример.
А какие ты ошибки получаеш? Включи "Full compiler output" и запости его вывод.
Свобода есть тонкая полоска между диктатурой и анархией.

---------------------
Mandriva Linux PowerPack 2006 (Cooker-нутая) / KDE-3.5.1
Спасибо сказали:
Аватара пользователя
ezheg
Сообщения: 258
Статус: джидай 3-го уровня
ОС: Mac OS X

Re: KDevelop

Сообщение ezheg »

а книжка есть какая-нить по kdevelop на русском?
в бумажном варианте
Спасибо сказали:
Аватара пользователя
Valerius
Бывший модератор
Сообщения: 1469
Статус: Отпетый КДЕ'шник

Re: KDevelop

Сообщение Valerius »

Есть. "Программирование на C++ в Linux" Н. Секунов, БВХ-Петербург. 2003г. Книга именно по прогр. в KDevelop 2.1.3
Свобода есть тонкая полоска между диктатурой и анархией.

---------------------
Mandriva Linux PowerPack 2006 (Cooker-нутая) / KDE-3.5.1
Спасибо сказали:
Аватара пользователя
Xenon
Бывший модератор
Сообщения: 359
ОС: Debian

Re: KDevelop

Сообщение Xenon »

Но бред неимоверный просто. Я бы не советовал покупать. Я пожалел потраченых денег. Лучше бы себе соку купил.
Спасибо сказали:
Аватара пользователя
ezheg
Сообщения: 258
Статус: джидай 3-го уровня
ОС: Mac OS X

Re: KDevelop

Сообщение ezheg »

вобщем попалась мне в руки эта книга.тут я запнулся - толи kdevelop кривой - толи у меня руки не оттуда растут-
построение формы - это все хорошо и красиво,до момента создания слотов -
F3 - View and edit connections -> Signal - clicked() -> Slot - accept()
далее говорится нажать кнопарь edit slots а там new slot (вместо этого вижу new function-нажимаю ее).Говорится создать функцию с названием destination(int),создаю,закрываю окно - дальше говорится в списке signals выбрать clicked(int) - такого нет - только clicked() - а в списке Slots - приемник (насколько я еще что-то понимаю - только что созданный) destination(int). Но в списке его нет - только те что были accept() close() exec() reject() adjustSize() и все :o

?
Спасибо сказали:
Аватара пользователя
Xenon
Бывший модератор
Сообщения: 359
ОС: Debian

Re: KDevelop

Сообщение Xenon »

АА! :) Теже грабли, что и у меня.
Сожгите эту книгу :D
Спасибо сказали:
Аватара пользователя
ezheg
Сообщения: 258
Статус: джидай 3-го уровня
ОС: Mac OS X

Re: KDevelop

Сообщение ezheg »

надо встретится на нейтральной территории и представители 2х когда-то дружественных стран прилюдно сожгут оплот черного программирования у всех на глазах.Шоб другим неповадно было. ;)
Спасибо сказали:
Аватара пользователя
Valerius
Бывший модератор
Сообщения: 1469
Статус: Отпетый КДЕ'шник

Re: KDevelop

Сообщение Valerius »

Да книга не супер. И ещё обрати внимание на версии KDevelop у тебя и в книге.
Ты сигнал clicked(int) для какого виджета ищеш? Если QButton, то там только clicked(). А потом слоты в коннектах показываются только те, что подходят по сигнатуре, т.е. нельзя законектить сигнал clicked() на slot(int), поэтому ты и не увидел свой слот. Почитай лучше доку, что я приводил выше. И оригинальную доку от тролей - /usr/share/doc/qt-х.х.х/doc/html/index.html.
Перевод, правда довольно старой версии, можеш взять на моей страничке.
Свобода есть тонкая полоска между диктатурой и анархией.

---------------------
Mandriva Linux PowerPack 2006 (Cooker-нутая) / KDE-3.5.1
Спасибо сказали:
Аватара пользователя
ezheg
Сообщения: 258
Статус: джидай 3-го уровня
ОС: Mac OS X

Re: KDevelop

Сообщение ezheg »

kdevelop - 3.0,kde - 3.1,виджет - QPushButton; ну хорошо,если я сделаю destination() то оно видно.Непонятно правда что хотел автор.
Ладно,попробую еще раз вникнуть в доки,но только не сейчас ;)
Спасибо сказали:
Аватара пользователя
ezheg
Сообщения: 258
Статус: джидай 3-го уровня
ОС: Mac OS X

Re: KDevelop

Сообщение ezheg »

почитал
Вобщем сразу непонятки:
1. Как задать размеры формы в пикселях?
2. Как задать размеры кнопки в пикселях и ее координаты на форме?Или это по-простому невозможно?
3. Где можно почитать (в той же доке например) поподробней про создание собственных slot'ов?

спасибо
Спасибо сказали:
Аватара пользователя
Valerius
Бывший модератор
Сообщения: 1469
Статус: Отпетый КДЕ'шник

Re: KDevelop

Сообщение Valerius »

1, 2) void QWidget::setGeometry ( const QRect & ) [virtual slot]
3) в той же доке :) слот - это по сути обычный метод.
Свобода есть тонкая полоска между диктатурой и анархией.

---------------------
Mandriva Linux PowerPack 2006 (Cooker-нутая) / KDE-3.5.1
Спасибо сказали:
Аватара пользователя
ezheg
Сообщения: 258
Статус: джидай 3-го уровня
ОС: Mac OS X

Re: KDevelop

Сообщение ezheg »

спасибо
про слот возможно я не то сказал
вот например я пишу

Код: Выделить всё

QObject::connect( &quit, SIGNAL(clicked()), &a, SLOT(quit()) )

здесь quit - это функция выхода
а если хочу что-то собственное вместо quit - то где это объявлять/описывать чтобы потом подставлять для обработки например нажатия кнопки?
просто я не пойму где это найти в доке
Спасибо сказали:
Аватара пользователя
Valerius
Бывший модератор
Сообщения: 1469
Статус: Отпетый КДЕ'шник

Re: KDevelop

Сообщение Valerius »

Ну как где? Это должен быть слот обьекта &a. В том то и смысл connect-a - он соединяет сигнал одного объекта со слотом другого.
Свобода есть тонкая полоска между диктатурой и анархией.

---------------------
Mandriva Linux PowerPack 2006 (Cooker-нутая) / KDE-3.5.1
Спасибо сказали:
Аватара пользователя
ezheg
Сообщения: 258
Статус: джидай 3-го уровня
ОС: Mac OS X

Re: KDevelop

Сообщение ezheg »

ну слот это же функция?
то есть я могу например объявить функцию типа void function(){bla-bla}
и подставить ее в connect чтобы она выполнялась при нажатии на кнопку?
Спасибо сказали:
Аватара пользователя
Valerius
Бывший модератор
Сообщения: 1469
Статус: Отпетый КДЕ'шник

Re: KDevelop

Сообщение Valerius »

Да, но в классе эта ф-ция должна быть обьявлена именно как слот

Код: Выделить всё

class MyClass : public MyForm
{
  Q_OBJECT

public:
 MyClass();
 ~MyClass();

public slots:
  void MySlot();
};
Свобода есть тонкая полоска между диктатурой и анархией.

---------------------
Mandriva Linux PowerPack 2006 (Cooker-нутая) / KDE-3.5.1
Спасибо сказали:
Аватара пользователя
ezheg
Сообщения: 258
Статус: джидай 3-го уровня
ОС: Mac OS X

Re: KDevelop

Сообщение ezheg »

я немного в ступоре :huh:
допустим у меня есть простой проект app с формой и кнопкой
только main.cpp и ничего более:

Код: Выделить всё

#include <qapplication.h>
#include <qpushbutton.h>
#include <qwidget.h>
//#include <app.h>

int main( int argc, char **argv )
{
    QApplication a( argc, argv );
    QWidget w;
    w.setGeometry(100,100,300,200);
    QPushButton hello( "Hello world!", &w);
    hello.setGeometry(20,20,80,50);
    hello.setDefault(TRUE);
    QObject::connect(&hello,SIGNAL(clicked()),&a,SLOT(quit()));
    a.setMainWidget( &w );
    w.show();
    return a.exec();
}


тогда я вроде по логике должен сделать app.h, засунуть туда приведенный вами код - тогда на что нужно заменить MyForm - QWidget? Ругается
где-то потом надо прописать этот класс чтобы использовать MySlot()? И где описывать MySlot - в этом же файле?
Спасибо сказали:
Аватара пользователя
Valerius
Бывший модератор
Сообщения: 1469
Статус: Отпетый КДЕ'шник

Re: KDevelop

Сообщение Valerius »

Ты берёш примитивный демо-проект и пытаешся чегото в него впихнуть, совсем не разобравшись что и к чему. Эт неправильно. А тебе нужно внимательно и дотошно читать QT-шную доку - она очень подробная и там весьма неплохо всё описано.
Смысл приблизительно такой - делаеш в Дизайнере форму, это будет какой-то класс (смотри его свойства). Слоты можно обьявить и законектить прямо в Дизайнере. Потом добавляеш форму в проект. Создаёш свой класс, в котором в качестве базового указываеш класс формы. И в своём классе просто пишеш реализацию этих слотов. Вот в общем и всё. Подробности есть в доках QT и в тех ссылках, что я давал.
зы. Тебя же надеюсь не ставят в тупик понятия классов и виртуальных методов? А то у меня какие-то сомнения возникают...
Свобода есть тонкая полоска между диктатурой и анархией.

---------------------
Mandriva Linux PowerPack 2006 (Cooker-нутая) / KDE-3.5.1
Спасибо сказали:
Аватара пользователя
ezheg
Сообщения: 258
Статус: джидай 3-го уровня
ОС: Mac OS X

Re: KDevelop

Сообщение ezheg »

чего то я не пойму:

Код: Выделить всё

QString filename = QFileDialog::getOpenFileName(
                                QString::null, "Colors (*.txt)", this,
                                "file open", "Color Tool -- File Open" );


на что он ругается

Код: Выделить всё

form1.ui.h: In member function `virtual void Form1::openSlot1()':
form1.ui.h:16: error: conversion from `QDialog' to non-scalar type `QString'
   requested
form1.ui.h:16: error: syntax error before `::' token

ведь точно по синтаксису :unsure:
Спасибо сказали:
Аватара пользователя
elide
Бывший модератор
Сообщения: 2421
Статус: Übermensch
ОС: лялих

Re: KDevelop

Сообщение elide »

оффтопик:
расскажите мне, темному, в пяти словах (если в пяти нельзя, то не надо рассказывать - просто пошлите нафиг), что это за конструкция такая public slots:. что-то не укладывается она в мое представление о мире..... как она вообще работает, и как это соотносится со стандартами на язык?
слава роботам!
Спасибо сказали:
Аватара пользователя
Valerius
Бывший модератор
Сообщения: 1469
Статус: Отпетый КДЕ'шник

Re: KDevelop

Сообщение Valerius »

(piton3000 @ Суббота, 09 Октября 2004, 23:56) писал(а):ведь точно по синтаксису
А ты откуда его вызываеш? Насколоко я знаю, это нужно делать из метода класса, который является потомком QApplication.
elide Эта конструкция обрабатывается кутявым препроцессором и в конечном счёте превращается в стандартные инструкции языка.
Свобода есть тонкая полоска между диктатурой и анархией.

---------------------
Mandriva Linux PowerPack 2006 (Cooker-нутая) / KDE-3.5.1
Спасибо сказали:
Аватара пользователя
ezheg
Сообщения: 258
Статус: джидай 3-го уровня
ОС: Mac OS X

Re: KDevelop

Сообщение ezheg »

2 Valerius

Извините,просто час ночи,голова совсем не соображала
Вобщем сейчас там все получается,так что проблема отпала.
Добавлено:
У меня и похуже глюки бывают..
Спасибо сказали:
Аватара пользователя
Dilan
Сообщения: 93
Статус: Супер модератор
ОС: Gentoo Linux

Re: KDevelop

Сообщение Dilan »

Столкнулся с такой проблемой: при создании любого проекта выдает следущее:

Код: Выделить всё

Неверный файл проекта. Ошибка XML в строке <номер строки>, столбец <номер столбца>: tag mismatch.


Ругается только на эту строку :

Код: Выделить всё

   </substmap>


Вот весь файл (пример):

Код: Выделить всё

<?xml version = '1.0'?>
<kdevelop>
  <general>
    <author>?????/author>
  <email>dilan1984@list.ru</email>
      <version>0.1</version>
      <projectmanagement>KDevKDEAutoProject</projectmanagement>
      <primarylanguage>C++</primarylanguage>
      <keywords>
        <keyword>C++</keyword>
        <keyword>Code</keyword>
        <keyword>Qt</keyword>
        <keyword>KDE</keyword>
      </keywords>
    </author>
    <ignoreparts>
      <part>KDevdistpart</part>
      <part>KDevCTags</part>
      <part>KDevsubversion</part>
      <part>KDevcopyto</part>
      <part>KDevClearCase</part>
      <part>KDevFileGroups</part>
      <part>KDevDebugger</part>
      <part>KDevDoxygen</part>
      <part>KDevPerforce</part>
    </ignoreparts>
  </general>
  <substmap>
    <APPNAME>test</APPNAME>
    <APPNAMELC>test</APPNAMELC>
    <APPNAMEUC>TEST</APPNAMEUC>
    <AUTHOR>Александр</AUTHOR>
    <EMAIL>dilan1984@list.ru</EMAIL>
    <LICENSE>GPL</LICENSE>
    <LICENSEFILE>COPYING</LICENSEFILE>
    <VERSION>0.1</VERSION>
    <dest>/home/dilan/programming/test</dest>
  </substmap>
</kdevelop>


Как лечить?
Gentoo Base System version 1.12.1, gentoo-sources-2.6.17-r5, KDE-3.5.5
icq uid - 319283395
Спасибо сказали:
Аватара пользователя
ezheg
Сообщения: 258
Статус: джидай 3-го уровня
ОС: Mac OS X

Re: KDevelop

Сообщение ezheg »

А какой компонент лучше использовать для редактирования,ввода-вывода из файлов текста?
TextBrowser по-моему позволяет только просматривать текст..
Спасибо сказали:
Аватара пользователя
Valerius
Бывший модератор
Сообщения: 1469
Статус: Отпетый КДЕ'шник

Re: KDevelop

Сообщение Valerius »

QTextEdit
И в kdelibs если не ошибаюсь есть KTextEdit
Свобода есть тонкая полоска между диктатурой и анархией.

---------------------
Mandriva Linux PowerPack 2006 (Cooker-нутая) / KDE-3.5.1
Спасибо сказали:
Аватара пользователя
fatboy
Сообщения: 156
ОС: Zenwalk Linux, Windows XP

Re: KDevelop

Сообщение fatboy »

А вот у меня такая фигня: когда импортирую Qt'шный проект в KDevelop и пытаюсь его сбилдить (тут он ругается, что мол qmake надо сначала сделать, что и делаю) он мне вываливает например такое :

cd /home/fatboy/programming/qt/speeder && QTDIR="/usr/lib/qt3/bin/" qmake speeder.pro
*/bin/sh: line 1: qmake: command not found
**** Exited with status: 127 ***

А ведь он там ;) !

P.S. Вот только-что создал новый QMake project и такая же фигня.
Zenwalk 4.0
TOSHIBA Satellite A100
Спасибо сказали:
Аватара пользователя
denel
Сообщения: 497
ОС: Gentoo Linux

Re: KDevelop

Сообщение denel »

Ухты! Да я среди новичков, но не посмейте че нить подумать.... я вообще только только сел за последние 10 лет за программирование, C++ для меня чрезвычайно новый в отличии от Basic, но тем не менее решил изучить! не подскажете с чего лучше начать, а? (похоже я не только не знаю qt, я и о C++ представлений не имею...)
Спасибо сказали: