qt для чайников (два вопроса)

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

Аватара пользователя
Admi0n
Сообщения: 183
Статус: Еще один красноглазик

qt для чайников

Сообщение Admi0n »

1. Есть Gui приложение на qt необходимо в одну из областей программы вставить bash терминал, как это реалезовать?
2. Есть кнопка которая просто выполняет комунду ifconfig как можно перенаправить вывод команды в ещё одну область в gui приложении?

ide qt creator
AMD Athlon 3200+ 2.Ghz, RAM 1g, I/Video, 80g IDE
Intel Dual-Core E5300 2.6 GHz RAM 4 GB DDR2, NVIDIA GeForce 7600 GS 256 MB, HDD 320 GB IDE
Intel i3 3.4 GHz, RAM 4 GB DDR3, NVIDIA GeForce 220 GT 512 MB, HDD 500 GB SATA2

Блог: http://admi0n.blogspot.com/
Спасибо сказали:
Аватара пользователя
Crazy
Сообщения: 862
Статус: Адепт Дзен.
ОС: Mint, Win7.

Re: qt для чайников

Сообщение Crazy »


Desipere in loco
Спасибо сказали:
Аватара пользователя
Admi0n
Сообщения: 183
Статус: Еще один красноглазик

Re: qt для чайников

Сообщение Admi0n »

Crazy писал(а):
05.04.2011 23:10
1 http://code.google.com/p/qterminalwidget/
2 QProcess

1. Мало что понятно добавил файлы в проект, как хотя бы вызвать ту консоль?
2. погуглил пробовал так:
void MainWindow::on_pushButton_10_clicked()
{
system("ifconfig");
console = new QProcess;
console->readAllStandardOutput();
std::cout << arr.data();
// editor объявлен как QTextEdit *editor;
QTextEdit ->insertPlainText( arr.data() );
}

..
все что нужно перехватать вывод ifconfig и вывести его в QTextEdit или что то в этом роде
гуглю дальше..

p.s. qt увидел только вчера, впервые
AMD Athlon 3200+ 2.Ghz, RAM 1g, I/Video, 80g IDE
Intel Dual-Core E5300 2.6 GHz RAM 4 GB DDR2, NVIDIA GeForce 7600 GS 256 MB, HDD 320 GB IDE
Intel i3 3.4 GHz, RAM 4 GB DDR3, NVIDIA GeForce 220 GT 512 MB, HDD 500 GB SATA2

Блог: http://admi0n.blogspot.com/
Спасибо сказали:
NickLion
Сообщения: 3408
Статус: аватар-невидимка
ОС: openSUSE Tumbleweed x86_64

Re: qt для чайников

Сообщение NickLion »

Нехороший, но краткий способ:

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

    QProcess ip;
    ip.start("ip", QStringList("a"));
    if( ip.waitForFinished() ) {
        ui->plainTextEdit->setPlainText( QTextCodec::codecForLocale()->toUnicode( ip.readAll() ) );
    } else {
        ui->plainTextEdit->setPlainText( ip.errorString() );
    }

Нехороший, потому что нельзя делать такое в GUI потоке - затормозите пока не выполнится дочерний процесс.
Правильнее где-то так:

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

void MainWindow::on_pushButton_clicked()
{
    if( ip ) {
        ip->disconnect();
        delete [] ip;
    }
    ip = new QProcess();
    connect( ip, SIGNAL(readyRead()), SLOT(on_ip_readyRead()) );
    ui->plainTextEdit->setPlainText( QString() );
    ip->start("ip", QStringList("a"));
}

void MainWindow::on_ip_readyRead()
{
    ui->plainTextEdit->appendPlainText( QTextCodec::codecForLocale()->toUnicode( ip->readAll() ) );
}


PS

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

private slots:
    void on_pushButton_clicked();
    void on_ip_readyRead();
private:
    QProcess* ip;
Спасибо сказали:
Аватара пользователя
Crazy
Сообщения: 862
Статус: Адепт Дзен.
ОС: Mint, Win7.

Re: qt для чайников

Сообщение Crazy »

Admi0n писал(а):
05.04.2011 23:34
1. Мало что понятно добавил файлы в проект, как хотя бы вызвать ту консоль?

Думаю, что как обычный виджет Qt.
Еще вариант www.crossplatform.ru/node/566
Правда его надо немножко допилить.
У вас нет необходимых прав для просмотра вложений в этом сообщении.

Desipere in loco
Спасибо сказали:
Аватара пользователя
Admi0n
Сообщения: 183
Статус: Еще один красноглазик

Re: qt для чайников

Сообщение Admi0n »

Не могу запустить написанную программу на других Linux системах, на родной Ubuntu собираю программу Ctrl + Shift + B захожу в директория программы (test-build-desktopтам) лежит бинарный файл test, все запускается и прекрасно работает перенашу этот бинарник на виртуальную машину с Lubuntu запускаю программу и получаю:
$./test
bash: не удается запустить двоичный файл
Делаю sudo chmod 777 test, пробую еще раз и получаю тоже самое из под рута тоже самое, в чем причина?

Update
Совсем забыл что у меня Ubuntu 64 битная а Lubuntu в вертуалке 32 битная это наверное тоже важно...
AMD Athlon 3200+ 2.Ghz, RAM 1g, I/Video, 80g IDE
Intel Dual-Core E5300 2.6 GHz RAM 4 GB DDR2, NVIDIA GeForce 7600 GS 256 MB, HDD 320 GB IDE
Intel i3 3.4 GHz, RAM 4 GB DDR3, NVIDIA GeForce 220 GT 512 MB, HDD 500 GB SATA2

Блог: http://admi0n.blogspot.com/
Спасибо сказали:
NickLion
Сообщения: 3408
Статус: аватар-невидимка
ОС: openSUSE Tumbleweed x86_64

Re: qt для чайников

Сообщение NickLion »

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

readelf -d test | grep NEEDED

И смотрите каких библиотек не хватает на той системе, поставьте недостающие пакеты.
Спасибо сказали:
Аватара пользователя
Admi0n
Сообщения: 183
Статус: Еще один красноглазик

Re: qt для чайников

Сообщение Admi0n »

NickLion писал(а):
08.05.2011 23:56

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

readelf -d test | grep NEEDED

И смотрите каких библиотек не хватает на той системе, поставьте недостающие пакеты.

Спасибо помогло.

Тоже сам тупонул архитектура то разная, поставил в виртуалку Ubuntu 64-битную и недостающие библиотеки все отлично работает! :happy:

Еще вопрос возможно ли откомпилировать программу в 64 битной ОС для 32 битной?
AMD Athlon 3200+ 2.Ghz, RAM 1g, I/Video, 80g IDE
Intel Dual-Core E5300 2.6 GHz RAM 4 GB DDR2, NVIDIA GeForce 7600 GS 256 MB, HDD 320 GB IDE
Intel i3 3.4 GHz, RAM 4 GB DDR3, NVIDIA GeForce 220 GT 512 MB, HDD 500 GB SATA2

Блог: http://admi0n.blogspot.com/
Спасибо сказали:
NickLion
Сообщения: 3408
Статус: аватар-невидимка
ОС: openSUSE Tumbleweed x86_64

Re: qt для чайников

Сообщение NickLion »

Admi0n писал(а):
09.05.2011 01:14
Еще вопрос возможно ли откомпилировать программу в 64 битной ОС для 32 битной?

Да, в таком направлении нет проблем:
g++ -m32
а всё остальное как обычно. Но соответственно dev пакеты 32-х битные должны стоять. Те же libstdc++, libqt4 и т.д.
В обратном направлении (на 32 бита собрать 64) будет сложнее - обычно в 32битных дистрах GCC без поддержки сборки 64 бит.
Спасибо сказали:
Аватара пользователя
Admi0n
Сообщения: 183
Статус: Еще один красноглазик

Re: qt для чайников

Сообщение Admi0n »

NickLion писал(а):
09.05.2011 10:15
Admi0n писал(а):
09.05.2011 01:14
Еще вопрос возможно ли откомпилировать программу в 64 битной ОС для 32 битной?

Да, в таком направлении нет проблем:
g++ -m32
а всё остальное как обычно. Но соответственно dev пакеты 32-х битные должны стоять. Те же libstdc++, libqt4 и т.д.
В обратном направлении (на 32 бита собрать 64) будет сложнее - обычно в 32битных дистрах GCC без поддержки сборки 64 бит.

Очень хорошо только гда бы этот пораметр добавить в Qt creator?
Что бы из IDE можно было выбрать под что компилить под 86 или 64.

По идее где то тут:

Изображение

Изображение

Только не получается выбрать в меню инструментарий вместо GCC 64bit GCC 32bit...
AMD Athlon 3200+ 2.Ghz, RAM 1g, I/Video, 80g IDE
Intel Dual-Core E5300 2.6 GHz RAM 4 GB DDR2, NVIDIA GeForce 7600 GS 256 MB, HDD 320 GB IDE
Intel i3 3.4 GHz, RAM 4 GB DDR3, NVIDIA GeForce 220 GT 512 MB, HDD 500 GB SATA2

Блог: http://admi0n.blogspot.com/
Спасибо сказали:
NickLion
Сообщения: 3408
Статус: аватар-невидимка
ОС: openSUSE Tumbleweed x86_64

Re: qt для чайников

Сообщение NickLion »

Думается, сначала нужно установить qt dev пакеты для 32-х бит.
Спасибо сказали: