crossplatform.ru

Здравствуйте, гость ( Вход | Регистрация )

История благодарностей участнику lucifer_vrn ::: Спасибо сказали: 3 раз(а)
Дата поста: В теме: За сообщение: Спасибо сказали:
2.2.2010, 15:16 кнопки-иконки
ну тогда создать класс унаследованный от QToolButton или QPushButton в нем переопределить paintEvent, оригинальный paintEvent не вызывать, а в нем с помощью QPainter::drawPixmap нарисовать иконку....
breeve,
2.2.2010, 14:22 кнопки-иконки
breeve,
попробуй так:
    QToolButton *buttonOpen = new QToolButton;
    buttonOpen->setIcon(QIcon(":/tabbutton/images/open.png"));
    buttonOpen->setFixedSize(buttonOpen->iconSize());
    buttonOpen->setAutoRaise(true);
breeve,
2.2.2010, 13:07 Программка виснет при нажатии кнопочки
ничего удивительного. ты конечно не обижайся, но это код достойный очутиться на сайте говнокод.ру....
QLabel *help; у тебя определен в хедере.
а ты еще в сипипишнике еще один определяешь, в итоге у тебя выходит, что тот что в хедере не иницилизирован и обращение в слоте происходит к рандомному участку памяти.
короче говоря твой сипипи должен быть такой.
include <QtGui>
#include "tbasewindow.h"

TBaseWindow::TBaseWindow(QWidget *parent)
    :QWidget(parent)
{

    help = new QLabel(this);
    help->setText(QString("Welcome!!!"));
    help->setFont(QFont("Times", 25, QFont::Bold));
    help->setGeometry(QRect(QPoint(200, 500), help->sizeHint()));

    But = new QPushButton(this);
    But->setGeometry(QRect(QPoint(300, 300), But->sizeHint()));

    connect(But,SIGNAL(clicked()),this,SLOT(click()));
    setFixedSize(600,600);
}

void TBaseWindow::click()
{
    help->setText(QString("hdhgdhgdhgdghd"));
}

Еще пара замечаний: 1. Зачем у тебя часть переменных в private часть в protected. Если ты конечно от этого класса не собираешь потом наследоваться....
2. But->setGeometry(QRect(QPoint(300, 300), But->sizeHint())); - мега жесть. Кури про QLayout, в частности QVBoxLayout и QHBoxLayout.


Цитата(igorenja @ 2.2.2010, 12:53) *
И ещё вопрос: При компиляции примеров в папке проектов Release появляется exe-шник, который не запускается отдельно от Qt. Вопрос что нужно сделать чтобы после компиляции был запускаемый на любом компьютере exe-шник.


чтоб запускалься на машине под виндой, где уже установлен куте, нужно в системе переменную path дополнить строкой типа "C:\Qt\2010.01\mingw\bin;C:\Qt\2010.01\qt\bin"
или положить кучу дллок от куте в папку с бинарем. дллк из этих папок bin. Все не обязательно, надо смотреть какие именно использует твое приложение, кроме того там их по две разных одна типа для дебуга другая релиз...
есть еще один выход - статическая линковка, но я сколько не парился - у меня не получилось... если кто подскажет как это сделать буду благодарен.
igorenja,

RSS Текстовая версия Сейчас: 28.5.2024, 12:46