Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Как подключить библиотеку ncurses к проекту на Qt 
:(
    Опции темы
erslgoeirjh
Дата 10.4.2023, 17:16 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 147
Регистрация: 16.12.2005

Репутация: нет
Всего: нет



Я создал проект на Qt Creator 4.12.2 под именем NcursesTest в операционной системе Windows 10, в котором используется библиотека ncurses для работы с консольным окном.
Библиотеку ncurses я установил на мой компьютер с помощью программы MSYS2. После установки MSYS2 я вызвал MSYS MING32, в окне я ввёл команду
Цитата

$ pacman –Suy

для обновления репозитория, затем я закрыл это окно с помощью команды exit, затем я снова вызвал MSYS MING32, в окне которого я ввёл
Цитата

$ pacman –Ss ncurses

Для установки библиотеки ncurses.
После этого я то же самое сделал с MSYS MING64 – сперва ввёл в его окне
Цитата

$ pacman –Suy

А затем, после закрытия этого окна с помощью команды exit, я заново вызвал MSYS MINGW64 и ввёл в его окне команду
Цитата

$ pacman –Ss ncurses

В результате чего библиотека ncurses была установлена на мой комптьютер.

Файл mainwindow.cpp моего проекта:

Код

#include “mainwindow.h”
#include “ui_mainwindow.h”
#include “ncurses.h”

MainWindow::MainWindow(QWidget *parent)
                            : QMainWindow(parent),
                           Ui(new Ui::MainWindow)
{
    ui->setupUi(this);
}

MainWindow::~MainWindow()
{
    delete  ui;
}

void  MainWindow::on_pushButton_clicked()
// если была нажата кнопка “Выход”
{
    close();
}

void  MainWindow::on_pushButton_2_clicked()
// если была нажата кнопка “Тестировать”
{
    initscr();
    printw(“Hello world!\n”);
    refresh();
    getch();
    endwin();
}


В результате при компиляции проекта появляются сообщения об ошибках:

Цитата

undefined reference to ‘initstr’
undefined reference to ‘printw’
undefined reference to ‘refresh’
undefined reference to ‘stdscr’
undefined reference to ‘wgetch’
undefined reference to ‘endwin’


Файл NcursesTest.pro выглядит следующим образом:
 
Цитата

QT += core gui
greaterThan(QT_MAJOR_VERSION,4): QT+=widgets
CONFIG += c++11
DEFINES += QT_DEPRECATED_WARNINGS

SOURCES += \
                           main.cpp
                           mainwindow.cpp

HEADERS += \
                          C:/Qt/Qt5.12.9/Tools/mingw730_32/ opt/include/ncursesw/curses.h \
                          C:/Qt/Qt5.12.9/Tools/mingw730_32/ opt/include/ncursesw/cursesapp.h \
                          C:/Qt/Qt5.12.9/Tools/mingw730_32/ opt/include/ncursesw/cursesf.h \
                          C:/Qt/Qt5.12.9/Tools/mingw730_32/ opt/include/ncursesw/cursesm.h \
                          C:/Qt/Qt5.12.9/Tools/mingw730_32/ opt/include/ncursesw/cursesp.h \ 
                          C:/Qt/Qt5.12.9/Tools/mingw730_32/ opt/include/ncursesw/cursesw.h \
                          C:/Qt/Qt5.12.9/Tools/mingw730_32/ opt/include/ncursesw/cursslk.h \
                          C:/Qt/Qt5.12.9/Tools/mingw730_32/ opt/include/ncursesw/eti.h \
                          C:/Qt/Qt5.12.9/Tools/mingw730_32/ opt/include/ncursesw/etip.h \
                          C:/Qt/Qt5.12.9/Tools/mingw730_32/ opt/include/ncursesw/form.h \
                          C:/Qt/Qt5.12.9/Tools/mingw730_32/ opt/include/ncursesw/menu.h \
                          C:/Qt/Qt5.12.9/Tools/mingw730_32/ opt/include/ncursesw/nc_tparm.h \
                          C:/Qt/Qt5.12.9/Tools/mingw730_32/ opt/include/ncursesw/ncurses.h \
                          C:/Qt/Qt5.12.9/Tools/mingw730_32/ opt/include/ncursesw/ncurses_dll.h \
                          C:/Qt/Qt5.12.9/Tools/mingw730_32/ opt/include/ncursesw/ncurses_mingw.h \
                          C:/Qt/Qt5.12.9/Tools/mingw730_32/ opt/include/ncursesw/panel.h \
                          C:/Qt/Qt5.12.9/Tools/mingw730_32/ opt/include/ncursesw/term.h \
                          C:/Qt/Qt5.12.9/Tools/mingw730_32/ opt/include/ncursesw/term_entry.h \
                          C:/Qt/Qt5.12.9/Tools/mingw730_32/ opt/include/ncursesw/termcap.h \
                          C:/Qt/Qt5.12.9/Tools/mingw730_32/ opt/include/ncursesw/tic.h \
                          C:/Qt/Qt5.12.9/Tools/mingw730_32/ opt/include/ncursesw/unctrl.h \
                          mainwindow.h

FORMS += \
                      mainwindow.ui

INCLUDEPATH += /path/to/ncurses/headers
INCLUDEPATH += C:/Qt/Qt5.12.9/Tools/mingw730_32/opt/include/ncursesw

LIBS ++ -L/path/to/ncurses/library/-lncursesw

qnx:  target.path = /tmpl/$${TARGET}/bin
else: unix:!android:target.path=/opt/$${TARGET}/bin
!isEmpty(target.path):INSTALLS+=target
Win32:CONFIG(release, debug|release): LIBS +=-LC:/Qt/Qt5.12.9/Tools/mingw730_32/opt/lib/lncursesw
else:win32:CONFIG(debug, debug|release): LIBS += -LC:/Qt/Qt5.12.9/Tools/mingw730_32/opt/lib/lncursesw
else:unix: LIBS += -LC:/Qt5.12.9/Tools/mingw730_32/opt/include/ncursesw

DEPENDPATH += C:/Qt/Qt5.12.9/Tools/mingw730_32/opt/include/ncursesw


Как сделать так, чтобы у меня произошло правильное подключение библиотеки ncurses в мой проект? Как сделать так, чтобы моя программа нормально скомпилировалась и запустилась?

PM MAIL   Вверх
erslgoeirjh
Дата 17.4.2023, 16:57 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 147
Регистрация: 16.12.2005

Репутация: нет
Всего: нет



Я сделал изменения в файле NcursesTest.pro и mainwindow.cpp . В результате у меня получилось:

1) файл NcursesTest.pro:

Цитата

QT += core gui

greater than(QT_MAJOR_VERSION, 4): QT += widgets

CONFIG += c++11

DEFINES += QT_DEPRECATED_WARNINGS

SOURCES += \
main.cpp
mainwindow.cpp

HEADERS += \
mainwindow.h

INCLUDEPATH += LC:\Qt\Qt5.12.9\Tools\mingw730_64\opt\bin

FORMS += \
mainwindow.ui

unix|win32: LIB += -LC:/Qt/Qt5.12.9/Tools/mingw730_32/opt/lib -lncurses

INCLUDEPATH += C:/Qt/Qt5.12.9/Tools/mingw730_32/opt/include/ncursesw

DEPENDPATH += C:/Qt/Qt5.12.9/Tools/mingw730_32/opt/include/ncursesw


2) файл mainwindow.cpp:

Код

#include "mainwindow.h"
#include "ui_mainwindow.h"
#include "ncurses.h"
 
MainWindow::MainWindow(QWidget *parent)
           :QMainWindow(parent),
           ui(new Ui::MainWindow)
{
    ui->setupui(this);
}
 
MainWindow::~MainWindow()
{
    delete ui;
}
 
void  MainWindow::on_pushButton_clicked()
// если была нажата кнопка "Выход"
{
    close();
}
 
void  MainWindow::on_pushButton_2_clicked()
// если была нажата кнопка "Тестировать"
{
    initscr();
    printw("Hello world!\n");
    refresh();
    getch();
    endwin();
}


В результате чего у меня программа компилируется, запускается. При нажатии на кнопку "Тестировать" у меня появляется консольное окно, на котором отображена надпись Hello world! и переход на следующую строку.
Но только почему-то при нажатии какой-либо клавиши у меня это консольное окно не закрывается. Как сделать так, чтобы это консольное окно закрывалось?

PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "С/С++: Кроссплатформенное программирование, QT/Gtk+/wxWidgets"
JackYF
Любитель
  • В заголовке темы в квадратных скобках обозначьте используемую вами библиотеку, например: [QT],[GTK],[wx].
  • Если вопрос актуален только для некоторой версии библиотеки, либо, если вы пользуетесь не самой последней версией, укажите это. Например: [QT4], [GTK2].
  • Все начинающие изучать Qt - не забудьте зайти сюда.
  • Проставьте несколько ключевых слов темы, чтобы её можно было легче найти.
  • В вопросе укажите полную версию версию библиотеки, а также все дополнительные используемые программные пакеты.
  • Не забывайте пользоваться кнопкой "Код".
  • Телепатов на форуме нет! Задавайте чёткий, конкретный и полный вопрос. Указывайте полностью ошибки компилятора и компоновщика.
  • Новое сообщение должно иметь прямое отношение к тематике этого раздела. Флуд, флейм, оффтопик запрещены.
  • Категорически запрещается обсуждение вареза, "кряков", взлома программ и т.д.

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, JackYF, Любитель.

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | С/С++: Кроссплатформенное программирование, Qt/Gtk+/wxWidgets | Следующая тема »


 




[ Время генерации скрипта: 0.1197 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.