Ir ao conteúdo
  • Cadastre-se
Junior nss

C Como colocar Interface em C

Recommended Posts

Olá, estou querendo aprender colocar interface em C, fiz muitas pesquisas sobre como colocar e me indicaram o Gtk+, mas não consigo instalar e nem sei como usar, pode me dar uma ajudinha com isso? Meu SO é Windows 10, e queria saber se o Glade também é bom para interface? Desde já agradeço

  • Obrigado 1

Compartilhar este post


Link para o post
Compartilhar em outros sites

Se não estiver a fim de mudar de linguagem de programação,
como o java ou C#, então instale o Qt Creator,
com ele você colocará interfaces gráficas em programas
feito em C ou C++, e este Qt é muito bom,
a documentaçãoo dele é muito boa e completa,
e de fácil acesso e aprendizado.

Aqui está um exemplo de um simples programa,

Criado por mim mesmo que mostra

pares e ímpares num vetor de inteiros.

 

1993972186_pares_mpares.PNG.9c1821788ba71b1c9cb81f2b5432241f.PNG

 

//main.cpp
//Pares e ímpares em array com dois label
//e em duas cores na janela
#include "mainwindow.h"
#include <QApplication>
#include "ui_mainwindow.h"
#include <QPainter>
#include <QLabel>
/*============================================================*/
MainWindow::MainWindow(QWidget *parent) :
  QMainWindow(parent),
  ui(new Ui::MainWindow) {
  ui->setupUi(this);
}
/*============================================================*/
MainWindow::~MainWindow ( ) {
  delete ui;
}
/*============================================================*/
void MainWindow::load_Array ( ) {
    int a = 0;
    int A [ 100 ], i;
    for( i = 1; i <= 100; i++ ) {
        A [ a ] =  i;
        a++;
    }
     int myInt = 0;
     QLabel *label_1 = new QLabel ( this );
     label_1->setFont ( QFont ( "MS Shell Dig2", 11, QFont :: Normal ) );
     //Posiciona, e fixa um tamanho para o label
     label_1->setGeometry ( 170, 50, 291, 188 );
     label_1->setWordWrap ( true );
     label_1->setStyleSheet ( "QLabel {  black; }");

     QLabel *label_2 = new QLabel ( this );
     label_2->setFont ( QFont ( "MS Shell Dig2", 11, QFont :: Normal ) );
     //Posiciona, e fixa um tamanho para o label
     label_2->setGeometry ( 200, 50, 291, 188 );
     label_2->setWordWrap ( true );
     label_2->setStyleSheet("QLabel { color : red; }");

    for( a = 0; a < 100; a++ ) {
           if ( a % 2 == 0 ) {
           if ( a >= 0 && a < 9 )
               label_1->setText( label_1->text ( ) + QString::number (  myInt ) );
               label_1->setText( label_1->text ( ) + QString::number (  A [ a ] ) + "\t" );
           } else {
                if ( a >= 0 && a < 9 )
              label_2->setText( label_2->text ( ) + QString::number (  myInt ) );
              label_2->setText( label_2->text ( ) + QString::number (  A [ a ] ) + "\t" );
           }
    }
     label_1->show ( );
     label_2->show ( );
}
/*============================================================*/
void MainWindow::paintEvent ( QPaintEvent *event ) {
  QPainter painter ( this );
  //Criando um retângulo sem preenchimento
  QRectF rectangle ( 5.0, 5.0, 590.0, 290.0 );
  //Colocando uma borda vermelha no retângulo
  painter.setPen ( QPen ( Qt::red, 10, Qt::SolidLine ) );
  //Adicionando a retângulo ao painter
  painter.drawRect ( rectangle );
  painter.setFont ( QFont ( "Times", 16, QFont :: Bold ) );
  painter.setPen ( Qt::black );
  painter.drawText ( QPoint ( 220, 40 ), "Qt - Pares e ímpares");
  load_Array ( );
}
/*============================================================*/
int main ( int argc, char *argv [ ] ) {
  QApplication a(argc, argv);
  MainWindow w;
  w.show();
  return a.exec();
}
 
 //MAINWINDOW_H
 //mainwindow.h
#ifndef MAINWINDOW_H
#define MAINWINDOW_H

#include <QMainWindow>
#include <QPainter>

namespace Ui {
class MainWindow;
}

class MainWindow : public QMainWindow
{
    Q_OBJECT

public:
    explicit MainWindow(QWidget *parent = nullptr);
    ~MainWindow();
virtual void paintEvent ( QPaintEvent *event );
   virtual void load_Array ( );
private:
    Ui::MainWindow *ui;
};

#endif // MAINWINDOW_H 

 

  • Curtir 1

Compartilhar este post


Link para o post
Compartilhar em outros sites

O problema é que não dá pra usar Qt no C diretamente, que é o que o autor do tópico está procurando, no melhor caso seria necessário fazer o GUI em C++ e a lógica do programa em C linkando os 2 pra fazer o programa, mas ainda seria necessário saber programar em C++.

 

Se for programar GUI estritamente em C, pode usar GTK ou no caso específico do Windows também pode usar o Windows API.

  • Curtir 1

Compartilhar este post


Link para o post
Compartilhar em outros sites
8 minutos atrás, isrnick disse:

O problema é que não dá pra usar Qt no C diretamente, que é o que o autor do tópico está procurando, no melhor caso seria necessário fazer o GUI em C++ e a lógica do programa em C linkando os 2 pra fazer o programa, mas ainda seria necessário saber programar em C++.

 

Se for programar GUI estritamente em C, pode usar GTK ou no caso específico do Windows também pode usar o Windows API.

Agora eu concordo com o que você escreveu: Toda a lógica pode ser criada em C, mas a interface sempre será em C++, o que na minha opinião ainda é mil vezes melhor que esta biblioteca GTK, ou outras que tem por aí, e que já testei, e que só servem para dar dor de cabeças em quem tentar usá-las. O C não é orientado a objetos, e querer criar janelas com C puro é querer ter problemas. Ainda tem o C++Builder que pode ser usado, mas ainda prefiro o Qt creator.

  • Curtir 1

Compartilhar este post


Link para o post
Compartilhar em outros sites

@Junior nss

Interface gráfica em C puro é bem chatinha, se não te agrada a QT ou o Visual C, tenta a WxWidgets, essa playlist é um bom local de partida: https://www.youtube.com/playlist?list=PLedPNvbgm76-unH66UYIQ81hE-GxkdIl8

 

  • Curtir 1

Compartilhar este post


Link para o post
Compartilhar em outros sites

Crie uma conta ou entre para comentar

Você precisar ser um membro para fazer um comentário

Criar uma conta

Crie uma nova conta em nossa comunidade. É fácil!

Crie uma nova conta

Entrar

Já tem uma conta? Faça o login.

Entrar agora





Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas publicações sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×