Panel użytkownika
Nazwa użytkownika:
Hasło:
Nie masz jeszcze konta?

[c++, qt, NCURSES, Linux] Problem z ramkami w trybie konsolowym

Ostatnio zmodyfikowano 2016-12-14 04:49
Autor Wiadomość
alien1983
Temat założony przez niniejszego użytkownika
[c++, qt, NCURSES, Linux] Problem z ramkami w trybie konsolowym
» 2016-12-03 18:39:28
Witam,

W trybie konsolowym mam problem z ramkami w każdym innym terminalu wyświetlają się inaczej xterm, putty, jak i w terminalu w ubuntu. Jak to zrobić aby we wszystkich terminalach działało to identycznie tak jak w Midnight Commander. Gdzie nie odpalę mc wyświetla się niemal identycznie - poprawnie. Jak to zrobić w NCURSES (qt c++ linux) ?

C/C++
#include <ncurses.h>
int main( void )
{
    initscr();
    attron( A_UNDERLINE );
    mvprintw( 0, 7, "NCURSES EXTENDED CHARACTERS\n" );
    attroff( A_UNDERLINE );
    printw( "Upper left corner         " ); addch( ACS_ULCORNER ); printw( "  ACS_ULCORNER\n" );
    printw( "Lower left corner         " ); addch( ACS_LLCORNER ); printw( "  ACS_LLCORNER\n" );
    printw( "Upper right corner        " ); addch( ACS_URCORNER ); printw( "  ACS_URCORNER\n" );
    printw( "Lower right corner        " ); addch( ACS_LRCORNER ); printw( "  ACS_LRCORNER\n" );
    printw( "Tee pointing right        " ); addch( ACS_LTEE ); printw( "  ACS_LTEE\n" );
    printw( "Tee pointing left         " ); addch( ACS_RTEE ); printw( "  ACS_RTEE\n" );
    printw( "Tee pointing up           " ); addch( ACS_BTEE ); printw( "  ACS_BTEE\n" );
    printw( "Tee pointing down         " ); addch( ACS_TTEE ); printw( "  ACS_TTEE\n" );
    printw( "Horizontal line           " ); addch( ACS_HLINE ); printw( "  ACS_HLINE\n" );
    printw( "Vertical line             " ); addch( ACS_VLINE ); printw( "  ACS_VLINE\n" );
    printw( "Large Plus or cross over  " ); addch( ACS_PLUS ); printw( "  ACS_PLUS\n" );
    printw( "Scan Line 1               " ); addch( ACS_S1 ); printw( "  ACS_S1\n" );
    printw( "Scan Line 3               " ); addch( ACS_S3 ); printw( "  ACS_S3\n" );
    printw( "Scan Line 7               " ); addch( ACS_S7 ); printw( "  ACS_S7\n" );
    printw( "Scan Line 9               " ); addch( ACS_S9 ); printw( "  ACS_S9\n" );
    printw( "Diamond                   " ); addch( ACS_DIAMOND ); printw( "  ACS_DIAMOND\n" );
    printw( "Checker board (stipple)   " ); addch( ACS_CKBOARD ); printw( "  ACS_CKBOARD\n" );
    printw( "Degree Symbol             " ); addch( ACS_DEGREE ); printw( "  ACS_DEGREE\n" );
    printw( "Plus/Minus Symbol         " ); addch( ACS_PLMINUS ); printw( "  ACS_PLMINUS\n" );
    printw( "Bullet                    " ); addch( ACS_BULLET ); printw( "  ACS_BULLET\n" );
    printw( "Arrow Pointing Left       " ); addch( ACS_LARROW ); printw( "  ACS_LARROW\n" );
    printw( "Arrow Pointing Right      " ); addch( ACS_RARROW ); printw( "  ACS_RARROW\n" );
    printw( "Arrow Pointing Down       " ); addch( ACS_DARROW ); printw( "  ACS_DARROW\n" );
    printw( "Arrow Pointing Up         " ); addch( ACS_UARROW ); printw( "  ACS_UARROW\n" );
    printw( "Board of squares          " ); addch( ACS_BOARD ); printw( "  ACS_BOARD\n" );
    printw( "Lantern Symbol            " ); addch( ACS_LANTERN ); printw( "  ACS_LANTERN\n" );
    printw( "Solid Square Block        " ); addch( ACS_BLOCK ); printw( "  ACS_BLOCK\n" );
    printw( "Less/Equal sign           " ); addch( ACS_LEQUAL ); printw( "  ACS_LEQUAL\n" );
    printw( "Greater/Equal sign        " ); addch( ACS_GEQUAL ); printw( "  ACS_GEQUAL\n" );
    printw( "Pi                        " ); addch( ACS_PI ); printw( "  ACS_PI\n" );
    printw( "Not equal                 " ); addch( ACS_NEQUAL ); printw( "  ACS_NEQUAL\n" );
    printw( "UK pound sign             " ); addch( ACS_STERLING ); printw( "  ACS_STERLING\n\n" );
    refresh();
    getch();
    endwin();
    return 0;
}
------------------------------

mc na putty wyświetla ramki prawidłowo, tutaj natomiast są ++++

dlaczego ?

Głównie chodzi o :

ACS_ULCORNER

ACS_LLCORNER

ACS_URCORNER

ACS_LRCORNER

ACS_LTEE

ACS_RTEE

ACS_BTEE

ACS_TTEE

ACS_HLINE

ACS_VLINE
P-154452
alien1983
Temat założony przez niniejszego użytkownika
» 2016-12-04 00:30:36
Niestety nadal jest pewien problem z wyświetlaniem;/
w putty i części terminali, teraz zamiast +++ są litery :/

mam problem ze znakami linii w niektórych terminalach np. Putty pod Windowsem jak i Termius - Telnet & SSH Client pod androidem.
Zamiast linii (ramek) wyświetlają się litery. Co ciekawe na konsolach ubuntu na terminalu standardowym jak i  xterm  działa to poprawnie jak i na: JuiceSSH - SSH Client pod androidem.

Natomiast MC pod Linuxa (Midnight Commander) Na wszystkim wyświetla się poprawnie, stąd twierdze że problem jest z NCURSES.

Program piszę na ubuntu QT C++ tryb konsoli.

wersja bibliotek NCURSES: 5.9

deklaracja w pliku .pro :
 LIBS += -lncursesw

deklaracja w kodzie programu:
 #include <ncursesw/cursesw.h>
P-154465
alien1983
Temat założony przez niniejszego użytkownika
» 2016-12-14 04:49:12
Prawidłowe ustawienie to:

(w .pro) LIBS =+ -ncursesw

#include<ncurses.h>
setlocale(LC_ALL,"");
initscr();
P-154894
« 1 »
  Strona 1 z 1