LINUX.ORG.RU

Сообщения Olegymous

 

Qt widgets and layouts

Форум — Development

Не могу разобраться с упаковкой виджетов в менеджеры расположения.

Что хочется: http://bit.ly/eK3vhQ
Что получается: http://bit.ly/eSrULS

Проще говоря хочется, чтобы виджеты вертикально были рядом, а не растаскивались по всему окну.

MainWindow->resize(467, 293);
centralwidget = new QWidget(MainWindow);
centralwidget->setObjectName(QString::fromUtf8("centralwidget"));
verticalLayout = new QVBoxLayout(centralwidget);
verticalLayout->setObjectName(QString::fromUtf8("verticalLayout"));
lineEdit = new QLineEdit(centralwidget);
lineEdit->setObjectName(QString::fromUtf8("lineEdit"));

verticalLayout->addWidget(lineEdit);

pushButton = new QPushButton(centralwidget);
pushButton->setObjectName(QString::fromUtf8("pushButton"));
QSizePolicy sizePolicy(QSizePolicy::Maximum, QSizePolicy::Fixed);
sizePolicy.setHorizontalStretch(0);
sizePolicy.setVerticalStretch(0);
sizePolicy.setHeightForWidth(pushButton->sizePolicy().hasHeightForWidth());
pushButton->setSizePolicy(sizePolicy);

verticalLayout->addWidget(pushButton);

Или в виде ui

<?xml version="1.0" encoding="UTF-8"?>
<ui version="4.0">
 <class>MainWindow</class>
 <widget class="QMainWindow" name="MainWindow">
  <property name="geometry">
   <rect>
    <x>0</x>
    <y>0</y>
    <width>467</width>
    <height>293</height>
   </rect>
  </property>
  <property name="windowTitle">
   <string>MainWindow</string>
  </property>
  <widget class="QWidget" name="centralwidget">
   <layout class="QVBoxLayout" name="verticalLayout">
    <item>
     <widget class="QLineEdit" name="lineEdit"/>
    </item>
    <item>
     <widget class="QPushButton" name="pushButton">
      <property name="sizePolicy">
       <sizepolicy hsizetype="Maximum" vsizetype="Fixed">
        <horstretch>0</horstretch>
        <verstretch>0</verstretch>
       </sizepolicy>
      </property>
      <property name="text">
       <string>PushButton</string>
      </property>
     </widget>
    </item>
   </layout>
  </widget>
 </widget>
 <resources/>
 <connections/>
</ui>

В какую сторону копать? И еще можете посоветовать годных статей про виджетостроение в Qt.

Olegymous
()

Socksification

Форум — Development

tsocks - программа, позволяющая пускать сетевые приложения через socks прокси.

Хотелось бы узнать как работают такого рода программы. Перехват открытия сетевого соединения или что-то другое? Поясните вкратце пожалуйста.

Olegymous
()

[python, PyQT?] Переменная удаляется, возвращаемое значение портится

Форум — Development

Не знаю, специфична ли эта вещь для всего Python или только для PyQt, но у меня проявилось при использовании PyQt.

def createimg():
    pixels = '...' # пиксели в строковой переменной
    return QtGui.QImage(pixels, 158, 54, QtGui.QImage.Format_RGB32)

Таким образом из функции возвращается объект QImage, но pixels в нём уже нет. Проверяется путем сохранения картинки методом save(). Сохраняется рябь вместо изображения.

Как понимаю, здесь в функции в конструктор QImage передаётся указатель на строку pixels, соответственно, когда при возврате происходит выход из функции переменная pixels удаляется, указатель становится невалидным и проявляется наблюдаемый эффект.

Решается таким костылём:

def createimg():
    pixels = '...' # пиксели в строковой переменной
    return QtGui.QImage(pixels, 158, 54, QtGui.QImage.Format_RGB32), pixels

Т.е. вместе с объектом возвращаем и источник пикселей, чтобы он не удалился. Есть ли способы прямее?

Olegymous
()

python struct.unpack()

Форум — Development
import struct;

s = "\x04\x9E\x00\x00\x00\x36\x00\x00\x00";
print struct.unpack('cLL', s);

Ошибка:

struct.error: unpack requires a string argument of length 24

Зачем ему нужно 24 символа? Если c - 1 байт, L - 4 байта. Итого 9 байт. Ровно столько и содержит символов строка s.

В тоже время на православном Perl всё работает.

use Data::Dumper;

$str = "\x04\x9E\x00\x00\x00\x36\x00\x00\x00";
print Dumper(unpack('cLL', $str));

Что я сделал неправильно?

Olegymous
()

[разыскивается] socksv4 server

Форум — General

Есть ли годный socks4 сервер для Linux?

Пишу perl-модуль, который будет определять тип прокси по его адресу и номеру порта. Для тестов http и socks5 заюзал 3proxy, а для socks4 на скорую руку ничего не нашлось.

Olegymous
()

[shell] seek X bytes, read Y bytes

Форум — Development

Есть ли годная утилита, желательно из coreutils или встроенная команда баша, которая может прочитать из файла несколько байт с определенной позиции?

Устроил бы dd, но он оперирует блоками и насколько я понял там невозможно нормально работать с байтами, кроме как установит ibs=1, но при этом чтение файла становится очень медленным, оно и понятно.

 

Olegymous
()

Зарезервировать область данных в файле

Форум — Development

К примеру торрент-клиенты умеют создавать такие хитрые файлы. Если посмотреть его в hex редакторе, то там одни нулевые байты. Если натравить на такой файл du -hs, то показывается нулевой размер. В тоже время du -b показывает размер полного файла. Как создаются такие файлы? Простая запись нулевых байт в файл не дала нужного результата.

Olegymous
()

[быдлокод] SQL injection

Форум — Talks

 

Olegymous
()

[VLC] Потоковое вещание аудио с тегами

Форум — Multimedia

Не могу разобраться как в VLC сделать чтоб он помимо аудио потока передавал исполнителя и название песни. Вещается через http.

Кто-нибудь знает?

 

Olegymous
()

[как это делается] amarok merge request

Форум — Talks

На днях изготовил патч для скрипта, который извлекает лирику в amarok2. Пруф: https://bugs.kde.org/show_bug.cgi?id=233605

Так вот что-то его не чешутся включать в upstream. Боюсь как бы мои труды даром не пропали. Пишут, мол, запросите merge request на гиториусе.

Кто-нибудь знает как это делается? Need help. С английским не дружу.

Скрипт этот: src/scripts/lyrics_lyricwiki/main.js

Olegymous
()

[Си] double free or corruption

Форум — Development
#include <string.h>
#include <stdlib.h>


int main()
{
	char **test;
	
	test = malloc(4);
	int i;
	
	for(i=0; i<4; i++)
	{
		test[i] = malloc(5);
		strcpy(test[i], "test");
	}
	
	for(i=0; i<4; i++)
	{
		free(test[i]);
	}
	
	free(test);
	
	return 0;
}

Компилю gcc, запускаю. В ответ:

*** glibc detected *** ./a.out: double free or corruption (out): 0x0000000001575030 ***

и дамп памяти далее.

В чем собственно дело?

 

Olegymous
()

RSS подписка на новые темы