Ir ao conteúdo
  • Cadastre-se

C Como colocar Interface em C


Junior nss

Posts recomendados

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

  • Curtir 1
  • Obrigado 1
Link para o comentário
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 2
Link para o comentário
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 2
Link para o comentário
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 2
Link para o comentário
Compartilhar em outros sites

Boa noite Junior e pessoal!

Voltando a ativa aqui no fórum... ler tua pergunta me fez lembrar quando estava aprendendo e brincava muito com C, amava fazer interfaces com a windows.h mesmo. Nada de editores "drag'n'drop" (nada de arrastar e soltar para desenhar a interface) tudo em código mesmo.

Se este tópico é voltado a aprendizado, aconselho a utilizar ela, eu lembro que eu calculava os pixels para criar cada elemento e colocar na tela por código mesmo, e ela não precisa instalar nada, e dominando ela você entende muitos principios que partinndo para um drag'n'drop ou uma biblioteca mais simples você pode não entender (Como a programação por eventos, como a callback de cada evento funciona).

Bom, dê uma procurada, é nativa e ótima.

Espero que ajude, qualquer dúvida só mandar.

Abraço!

  • Curtir 1
Link para o comentário
Compartilhar em outros sites

Crie uma conta ou entre para comentar

Você precisa ser um usuário 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 comunidades 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

×
×
  • Criar novo...

Ebook grátis: Aprenda a ler resistores e capacitores!

EBOOK GRÁTIS!

CLIQUE AQUI E BAIXE AGORA MESMO!